資料結構 1 不帶頭的單向非迴圈鍊錶知識整理

2021-09-19 14:36:58 字數 3223 閱讀 3976

鍊錶是一種物理儲存上非連續,非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序來實現的

鍊錶分為: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...