無頭單向不迴圈鍊錶和帶頭雙向迴圈鍊錶

2021-10-04 09:48:17 字數 2568 閱讀 2702

無頭單向不迴圈鍊錶

#include

#include

// slist.h

typedef

int sltdatetype;

typedef

struct slistnode

slistnode;

// 動態申請乙個節點

slistnode*

buyslistnode

(sltdatetype x)

// 單鏈表列印

void

slistprint

(slistnode* plist)

printf

("\n");

}// 單鏈表尾插

void

slistpushback

(slistnode*

* pplist, sltdatetype x)

cur-

>next = node;

cur = cur-

>next;

cur-

>next =

null;}

}// 單鏈表的頭插

void

slistpushfront

(slistnode*

* pplist, sltdatetype x)

}// 單鏈表的尾刪

void

slistpopback

(slistnode*

* pplist)

else

free

(cur)

;prev-

>next =

null;}

}}// 單鏈表頭刪

void

slistpopfront

(slistnode*

* pplist)

// 單鏈表查詢

slistnode*

slistfind

(slistnode* plist, sltdatetype x)

return

null;}

// 單鏈表在pos位置之後插入x

// 分析思考為什麼不在pos位置之前插入?

//在pos之前插入需要遍歷整個鍊錶,時間複雜度為o(n);

void

slistinsertafter

(slistnode* pos, sltdatetype x)

}// 單鏈表刪除pos位置之後的值

// 分析思考為什麼不刪除pos位置?

// 刪除pos位置需要遍歷整個鍊錶找到pos的前驅節點,才可以刪除pos節點

void

slisteraseafter

(slistnode* pos)

}// 單鏈表的銷毀

void

slistdestory

(slistnode*

* plist)

else}}

intmain()

帶頭雙向迴圈鍊錶
// 帶頭+雙向+迴圈鍊錶增刪查改實現

typedef

int ltdatatype;

typedef

struct listnode

listnode;

// 建立返回鍊錶的頭結點.

listnode*

listcreate()

// 雙向鍊錶銷毀

void

listdestory

(listnode* phead)

phead-

>_next = phead;

phead-

>_prev = phead;

}// 雙向鍊錶列印

void

listprint

(listnode* phead)

putchar

('\n');

}// 雙向鍊錶尾插

void

listpushback

(listnode* phead, ltdatatype x)

// 雙向鍊錶尾刪

void

listpopback

(listnode* phead)

}// 雙向煉表頭插

void

listpushfront

(listnode* phead, ltdatatype x)

// 雙向煉表頭刪

void

listpopfront

(listnode* phead)

}// 雙向鍊錶查詢

listnode*

listfind

(listnode* phead, ltdatatype x)

return

null;}

// 雙向鍊錶在pos的前面進行插入

void

listinsert

(listnode* pos, ltdatatype x)

// 雙向鍊錶刪除pos位置的節點

void

listerase

(listnode* pos)

}

無頭單向非迴圈鍊錶

首先建立乙個標頭檔案存放所需要的函式功能的宣告slist.h ifndef slist h define slist h include include include include typedef int sltdatatype typedef struct slistnodeslistnode...

單向有頭不迴圈鍊錶

鍊錶是一種常見的基礎資料結構,是一種線性表,是一種物理儲存單元上非連續 非順序的儲存結構。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。每個結點包括儲存資料元素的資料域和儲存下乙個結點位址的指標域兩個部分。相比於線性表順序結構,操作複雜。資料元素的邏輯順序也是通過鍊錶中...

帶頭雙向迴圈鍊錶

首先,我們來看一下帶頭雙向迴圈鍊錶的結構 目錄 帶頭雙向迴圈鍊錶結點的定義 相關操作介面 1 初始化 獲取乙個結點 2 銷毀鍊錶 3 尾插 4 頭插 5 指定元素查詢 6 任意位置插入 7 尾刪 8 頭刪 9 任意位置刪除 10 列印鍊錶 附上完整 typedef int datatype type...