C 實現順序表與鍊錶

2021-08-10 09:12:39 字數 3592 閱讀 2571

c++實現順序表與鍊錶

一、順序表

之前已經對順序表有了了解,需要注意的是讀者如果疑惑以下**沒有實現頭插與頭刪,是因為**中任意插入與刪除這兩個函式可以實現此功能。下面有測試**,讀者也可以自行測試。

**如下:

#includeusing namespace std;

#includetypedef int datatype;

class seqlist

//帶引數的建構函式

seqlist(datatype *array, size_t size)

: _array(new datatype[size])

, _capacity(size)

, _size(size)

//拷貝建構函式

seqlist(const seqlist& s)

:_array(new datatype[s._capacity])

, _capacity(s._capacity)

, _size(s._size)

//運算子=過載

seqlist& operator=(const seqlist& s)

~seqlist() }

void pushback(int data)

void popback()

void insert(size_t pos, datatype data)

_array[pos - 1] = data;

_size++;

} void erase(size_t pos)

_array[tmp] = _array[_size-1];

_size--;

} size_t size()const

size_t capacity()const

bool empty()const

datatype& operator(size_t index)

const datatype& operator(size_t index)const

// 返回順序表中的第乙個元素

datatype& front()

const datatype& front()const

// 返回順序表中最後乙個元素

datatype& back()

const datatype& back()const

// 清空順序表中的所有元素

void clear()

// reserve()

// 將順序表中元素個數改變到newsize

void resize(size_t newsize, const datatype& data = datatype())

else if ((newsize > _size)&&(newsize <= _capacity))

_size = newsize;

} else

for (size_t j = _size; j < newsize; j++)

delete _array;

_array = tmp;

_size = newsize;

_capacity = newsize;

} }friend ostream& operator<

cout << endl;

return cout;

}private:

void _checkcapacity()

delete _array;

_array = tmp;

} }private:

datatype *_array;

size_t _size;

size_t _capacity;

};void test()

int main()

測試結果:

二、雙向鍊錶

**如下:

#include#includeusing namespace std;

typedef int datatype;

struct node

node(const datatype& data)

: _pnext(null)

, _ppre(null)

, _data(data)

{} node* _pnext;

node* _ppre;

datatype _data;

};class list

list(datatype* array, size_t size)

void pushback(const datatype data)

node* pnewnode = new node(data);

ptail->_pnext = pnewnode;

pnewnode->_ppre = ptail;

} void popback()

node *tmp = _phead;

while ((tmp != null)&&(tmp->_pnext != null))

node *node = tmp->_ppre;

delete tmp;

node->_pnext = null;

} void pushfront(const datatype data)

else

}void popfront()

node *node = _phead->_pnext->_pnext;

delete (_phead->_pnext);

if (node == null) //只有乙個節點

node->_ppre = _phead;

_phead->_pnext = node;

} void erase(node* pos)

node *find(const datatype d) //查詢節點位置

tmp = tmp->_pnext;

} }void insert(node* pos, const datatype& data) //指定位置插入

size_t size() //鍊錶元素個數

return count;

}

void clear() //清空

node *tmp = _phead->_pnext;

node *next = tmp->_pnext;

while (tmp->_pnext!= null)

_phead->_pnext = null;

}

void display()

while (cur != null)

cout << endl;

}private:

node* _phead;

};int main()

執行結果如下:

C 實現順序表和煉表

更多c 知識 c 目錄索引 順序表 vector.h pragma once typedef int datatype class vector vector.cpp include vector.h include using namespace std vector vector 構造 firs...

順序表與鍊錶

單向鍊錶 雙向鍊錶 迴圈鍊錶 插入刪除過程要注意,初始指標應指向鍊錶尾節點 若當插入到頭前時,找不到前驅節點 當在更新尾節點時需要更新頭指標 鍊錶排序使用氣泡排序最為適合 資料結構 結構定義 結構操作 include include include include define malloc2 my...

順序表與鍊錶

它是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表 順序表 鍊錶 棧 佇列 字串 邏輯上連續,物理上不一定連續 儲存方式 通常是陣列或者鏈式結構 順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完成資料的增刪...