鍊錶是一種物理儲存上非連續,非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序來實現的
鍊錶分為:1.單向,雙向2.帶頭,不帶頭3.迴圈和非迴圈,組合起來總共八種
使用頭結點,則第1個位置的插入和刪除都是對p—>next進行操作,而不用動p本身,而且減少了演算法分支
slist.h
typedef
int sltdatatype;
typedef
struct slistnode
node,
*pnode;
typedef
struct slist
slist;
void
slistinit
(slist* s)
;void
slistdestroy
(slist* s)
;node*
buyslistnode
(sltdatatype data)
;void
slistpushfront
(slist* s,sltdatatype data)
;void
slistpopfront
(slist* s)
;void
slistpushback
(slist* s,sltdatatype data)
;void
slistpopback
(slist* s)
;node*
slistfind
(slist* s,sltdatatype data)
;node*
slistfindpos
(slist* s, sltdatatype data)
;void
slistinsertafter
(pnode pos,sltdatatype data)
;void
slisteraseafter
(pnode pos)
;void
slistremove
(slist* s, sltdatatype data)
;size_t slistsize
(slist* s)
;int
slistempty
(slist* s)
;void
slistclear
(slist* s)
;
test.c
#include
"slist.h"
#include
#include
#include
//初始化操作
void
slistinit
(slist* s)
//銷毀
void
slistdestroy
(slist* s)
}//建立新的節點
node*
buyslistnode
(sltdatatype data)
//頭插
void
slistpushfront
(slist* s,sltdatatype data)
//頭刪
void
slistpopfront
(slist* s)
//尾插
void
slistpushback
(slist* s,sltdatatype data)
pcur->_next = node;
}//尾刪
void
slistpopback
(slist* s)
pnode pcur = s->_head;
while
(pcur->_next->_next !=
null
)//pcur的下乙個節點的next指向空,說明pcur是倒數第二個
free
(pcur->_next)
; pcur->_next =
null;}
//查詢節點的位置
node*
slistfindpos
(slist* s, sltdatatype data)
for(
int i =
0; i < data-1;
++i)
return pcur;
}//在pos後面的位置插入
void
slistinsertafter
(pnode pos,sltdatatype data)
//刪除pos後的節點
void
slisteraseafter
(pnode pos)
else
}//移除值為data的節點
void
slistremove
(slist* s, sltdatatype data)
if(s->_head->_next ==
null
)else}}
}// 獲取鍊錶中有效節點的個數
size_t slistsize
(slist* s)
else
if(s->_head->_next ==
null
)else
return count;}}
// 檢測鍊錶是否為空
intslistempty
(slist* s)
else
return1;
}//列印節點
資料結構 鍊錶 帶頭結點的單向迴圈鍊錶
帶頭結點的單向迴圈鍊錶 include include include headlist.h 功能 建立乙個空鍊錶 引數 無 返回值 失敗返回null 成功返回頭結點的位址 list createlklist list first null list last null list n 0 現在還是空...
單向不帶頭結點不帶環的鍊錶實現
鍊錶有很多種類,單向,雙向,不帶頭,帶頭,不帶環,帶環,結合起來一共可以有八種鍊錶形式 今天我們來實現一種名字叫 單向不帶頭不帶環的鍊錶 下面就是每一部分的 實現 首先我們要做的就是函式的宣告,結構體的定義,標頭檔案的引用 pragma once define header printf n s n...
資料結構 單向迴圈鍊錶
typedef struct node node,pnode pnode init link list void 單鏈表初始化 phead next phead return phead pnode new node int dat bool insert node tail pnode phead...