C 實現靜態單鏈表的例項

2022-09-27 03:27:09 字數 2202 閱讀 9710

c++ 實現靜態單鏈表的例項

利用陣列實現的靜態單鏈表,與嚴蔚敏書實現略有不同,不另設**空間。有任何bug或錯誤,希望各位朋友多多反饋~~感激不盡

/* author : moyiii

* mail: [email protected]

* 靜態鍊錶實現,僅作學習之用,當然如果

* 你想拿去用,隨你好啦。

*/

#include

using namespace std;

#define max_list_size 100

class node ;

class slinklist ;

slinklist :: slinklist()

head = space = length = 0;

for(int i = 0; i < max_list_size; ++i)

elems[max_list_size - 1].cur = 0;

elems[0].cur = 0;

space = 1; }

//從space指向的備用節點鍊錶中取下乙個節點

int slinklist :: newnode()

int pos = space;

space = elems[space].cur;

elems[pos].cur = 0;

return pos; }

//**節點空間

bool slinklist :: deletenode(int pos)

elems[pos].cur = space;

space = pos;

return true; }

//插入節點,思路類似,找到被刪除節點的前乙個節點

//然後更改指向

bool slinklist :: insertelem(int pos, int elem)

if(pos < 1 || pos > length + 1)

int index = head;

for(int i = 1; i <= pos - 1; ++i)

int node = newnode();

if(node == 0)

elems[node].data = elem;

elems[node].cur = elems[index].cur;

elems[index].cur = node;

length++;

return true; }

//一回事,注意把刪除的節點**給space

bool slinklist :: deleteelem(int pos)

int index = head;

for(int i = 1; i <= pos - 1; ++i)

int node = elems[index].cur;

elems[index].cur = elems[node].cur;

deletenode(node);

length--;

rlwytapeturn true; }

void slinklist :: print()

cout << endl;

return; }

int slinklist :: getlength()

bool slinklist :: isempty()

else

} int& slinklist :: getelem(int pos)

return elems[index].data; }

void slinklist :: clear()

elems[max_list_size - 1].cur = 0;

elems[0].cur = 0;

space = 1; }

int main()

for(int i = 1; i <= 105; ++i)

//普通測試

www.cppcns.com for(int i = 1; i <= 10; ++i)

mylist.print();

cout << "length= " << mylist.getlength() <

本文標題: c++ 實現靜態單鏈表的例項

本文位址:

13 靜態單鏈表的實現

觸發條件 長時間使用單鏈表物件頻繁增加和刪除資料元素 可能的結果 堆空間產生大量的記憶體碎片,導致系統執行緩慢 在 單鏈表 的內部增加一片預留的空間,所有的node物件都在這篇空間中動態建立和動態銷毀。通過模板定義靜態單鏈錶類 staticlinklist 在類中定義固定大小的空間 unsigned...

C 定義並實現單鏈表例項解析

本文以例項詳細描述了c 定義並實現單鏈表的過程及原理。一般來說c 定義並實現單鏈表,包括構成鍊錶的結點定義 用變數來實現表頭 清空整個鍊錶 鍊錶復位,使第乙個結點成為當前結點 判斷鍊錶是否為空 判斷當前結點是否為最後乙個結點 返回當前結點的下乙個結點的值,並使其成為當前結點 將當前結點移出鍊錶,下乙...

靜態單鏈表

之前我們說過如果頻繁增刪資料元素,我們應該選擇單鏈表就可以,但是如果資料元素的最大個數固定,那麼就需要靜態單鏈表,而且動態單鏈表如果長時間使用單鏈表物件頻繁增加和刪除資料元素,堆空間產生大量的記憶體碎片,導致系統執行緩慢,所謂單鏈表就是 順序表 單鏈表 靜態單鏈表 設計思路 在 單鏈表 的內部增加一...