C語言實現單鏈表

2021-08-04 19:54:47 字數 2791 閱讀 2357

鍊錶和我們之前實現過的順序表一樣,都是簡單的資料結構,鍊錶分為單向鍊錶、雙向鍊錶、迴圈鍊錶。而單向鍊錶又分為兩種實現方法,一種為帶頭節點的單鏈表,一種為不帶頭節點的單鏈表。我們來具體看看不帶頭節點的單鏈表的實現

單鏈表:它是一種鏈式儲存的線性表,用一組位址任意的儲存單元存放線性表的資料元素,稱儲存單元為乙個節點。

今天我們來實現一些單鏈表的簡單介面

先看看單鏈表的結構:

(為了通用性,我們將型別重新命名為datatype)

typedef

int datatype;

//鍊錶

typedef

struct node

node, *pnode, *plist;

接下來看看我們要實現的介面:

void initlinklist(plist *pplist);//初始化鍊錶

pnode buynode(datatype d);//建立鍊錶節點

void pushback(plist *pplist, datatype d);//尾插

void popback(plist *pplist);//尾刪

void pushfront(plist *pplist, datatype d);//頭插

void popfront(plist *pplist);//頭刪

void printlist(plist plist);//列印鍊錶

pnode find(plist plist, datatype d);//查詢指定元素

void remove(plist *pplist, datatype d);//刪除指定的乙個元素

void removeall(plist *pplist, datatype d);//刪除指定的所有元素

void insert(plist *pplist, pnode pos, datatype d);//指定位置的後面插入

void erase(plist *pplist, pnode pos);//指定位置刪除

void destroylist(plist *pplist);//銷毀鍊錶

來看看每個介面的具體實現:

pnode buynode(datatype d)

newnode->

data

= d;

newnode->next =

null;

return newnode;

}void initlinklist(plist *pplist)

void pushback(plist *pplist, datatype d)

//鍊錶有節點

while (cur->next !=

null)

cur->next = newnode;

}void popback(plist *pplist)

//鍊錶有乙個節點

if (cur->next ==

null)

//鍊錶有兩個及兩個以上節點

while (cur->next !=

null)

prev->next =

null;

free(cur);

}void pushfront(plist *pplist, datatype d)

鍊錶有節點

newnode->next =

*pplist;

*pplist = newnode;

}void popfront(plist *pplist)

*pplist = cur->next;

free(cur);

cur =

null;

}void printlist(plist plist)

printf("null\n");

}pnode find(plist plist, datatype d)

cur = cur->next;

}return

null;

}void remove(plist *pplist, datatype d)

while (cur)

prev->next = cur->next;

free(del);

del =

null;

return;

}else

}}void removeall(plist *pplist, datatype d)

while (cur)

else

cur = cur->next;

free(del);

del =

null;

}else

}}//在pos後面插入乙個元素

void insert(plist *pplist, pnode pos, datatype d)

newnode->next = pos->next;

pos->next = newnode;

}void erase(plist *pplist, pnode pos)

//刪除的是非尾節點

else

}void destroylist(plist *pplist)

}

由於這些介面都較為簡單,所以不進行具體的測試展示,讀者可以自行測試

單鏈表中還有很多的面試題,之後會彙總起來一一實現。

c語言實現單鏈表

一 使用簡介 使用c語言實現了單鏈表的基本操作,共有四個檔案,兩個標頭檔案是常用的,後兩個分別是主函式,和對鍊錶的基本操作函式,倒入時候,須將四個檔案放在同乙個目錄下。二 心得 在書寫過程中,主要錯誤集中在指標的使用上,通過此次程式設計,對於指標的認識更加深刻,頭結點的存在,更大意義上是為了簡化指標...

C語言實現單鏈表

單鏈表可以說是基礎,有利於對指標的使用 結點 typedef int datatype typedef struct slistnode slistnode 實現的函式的宣告如下 slistnode buynode datatype x void printslist slistnode phead...

C語言實現單鏈表

dev c 編譯執行通過,實現了單鏈表的構建,清空,插入,刪除和查詢。include include include include include define ok 1 define error 0 typedef int elemtype typedef struct node node ty...