鍊錶和我們之前實現過的順序表一樣,都是簡單的資料結構,鍊錶分為單向鍊錶、雙向鍊錶、迴圈鍊錶。而單向鍊錶又分為兩種實現方法,一種為帶頭節點的單鏈表,一種為不帶頭節點的單鏈表。我們來具體看看不帶頭節點的單鏈表的實現
單鏈表:它是一種鏈式儲存的線性表,用一組位址任意的儲存單元存放線性表的資料元素,稱儲存單元為乙個節點。
今天我們來實現一些單鏈表的簡單介面
先看看單鏈表的結構:
(為了通用性,我們將型別重新命名為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...