c 封裝雙向鍊錶和順序表

2021-08-04 02:00:58 字數 2916 閱讀 8926

null)//乙個節點

else

//多個節點

}void pushfront(const datatype&

data)

else

}void popfront()

else

if (_tail->_ppre ==

null)//乙個節點

else

//多個節點

}node* find(const datatype&

data)

cur = cur->_pnext;}}

void insert(node* pos, const datatype&

data)

else

}void erase(node* pos)

else

if (pos==_tail)

else

}size_t size()

size_t count=

0; node* cur = _phead;

while (cur !=

null)

return count;

}bool empty()const

return

false;

}list(const list

& l)

:_phead(null)

, _tail(null)

}list

& operator=(const list

& l)

return

*this;

}~list()

}void swap(list

& l)

void display()const

node* cur = _phead;

while (cur)

cout <

node* tmp = _tail;

while (tmp)

cout <

}private:

node* buynode(const datatype&

data) //新建節點

private:

node* _phead;

node* _tail;

}; void test1()//尾插、尾刪

void test2()//頭插、頭刪

void test3()//鍊錶複製

void test4()//任意位置插入

void test5()//任意位置刪除

int main()

#include 

using namespace std;

//1、實現順序表的下列介面:

typedef int datatype;

class seqlist

seqlist(size_t n, datatype value);

// 淺拷貝 三大big

seqlist(const seqlist& s)

seqlist& operator=(const seqlist& s)

~seqlist()

void* pushback(const datatype& data)

_pdata[_size-1]=data;

}void popback()

void insert(size_t pos, const datatype& data)

_pdata[pos-1]=data ;

}void erase(size_t pos)

}int find(const datatype& data)

if (i==_size-1)

return

0; }

size_t size()const

size_t capacity()const

bool empty()const

return

false;

}void clear()

// 把順序表中的有效元素改變到size個

void resize(size_t size, const datatype& data)

}datatype& operator(size_t index)

const datatype& operator(size_t index)const

datatype& front()

const datatype& front()const

datatype& back()

const datatype& back()const

private:

void _checkcapacity()

} private:

datatype* _pdata;

size_t _capacity;

size_t _size;

};

鍊錶和順序表

順序表一般可以分為 1 靜態順序表 使用定長陣列儲存 2 動態順序表 使用動態開闢的數值儲存 順序表的靜態儲存 define n 100 typedef int sldatatype typedef struct seqlist seqlist 順序表的動態儲存 typedef struct seq...

鍊錶和順序表習題(一)

鍊錶順序表 每個元素的訪問 每個節點都需要通過指標找到記憶體然後載入到快取中 記憶體訪問時,不需要多次從記憶體到快取的步驟 頭插,頭刪,中間位置 直接增加或刪除節點 在插入或刪除之前要先對之後的資料進行挪動 尾插,尾刪 需要對空間進行操作 直接對資料進行操作,空間是之前一次性開闢好的 空間操作 每次...

鍊錶和順序表的區別

都屬於線性表,都是線性結構 順序表 順序儲存 優點 支援隨機訪問 儲存密度高 缺點 大片連續空間分配不方便,改變容量不方便 鍊錶 鏈式儲存 優點 離散的小空間分配方便,改變容量方便 缺點 不可隨機訪問,儲存密度低 創銷 增刪改 查 順序表 順序儲存 需要預分配大片連續空間。若分配空間過小,則之後不方...