資料結構學習第五課(雙向鍊錶)

2021-10-19 07:41:37 字數 3137 閱讀 5299

2,雙向鍊錶

2.1雙向鍊錶基本框架

typedef

int data;

typedef

struct _node

node;

//結點

typedef

struct doublelist

dulist;

//雙向鍊錶

2.2建立乙個雙向鍊錶
dulist*

createdulist()

2.3建立乙個結點
//建立乙個結點

node*

createnode

(data data)

newnode->data = data;

return newnode;

}

2.4尾插
//尾插

void

push_back

(dulist* list, data data)

2.5頭插
//頭插

void

push_front

(dulist* list, data data)

2.6檢視
//輸出

void

show_list

(dulist* list)

node* curnode = list->front->next;

while

(curnode!=

null

)printf

("\n");

}

2.7判斷鍊錶是否為空
//判斷鍊錶是否為空

#include

bool empty

(dulist* list)

2.8查詢指定元素
//查詢指定元素,找到返回結點所在的位置,沒有則放回null

node*

find

(dulist* list, data data)

node* curnode = list->front->next;

while

(curnode!=

null

) curnode = curnode->next;

}return

null

;}

2.9插入
//插入

void

insert

(dulist* list, node* iterator, data data)

2.10尾部刪除
//尾部刪除

void

pop_back

(dulist* list)

list->tail = list->tail->prev;

//讓尾指標前移一位

free

(list->tail->next)

; list->tail->next =

null

; list->size--

;}

2.11頭部刪除
//頭部刪除

void

pop_front

(dulist* list)

node* delnode = list->front->next;

//儲存刪除的結點

list->front->next = delnode->next;

//判斷是不是只有乙個結點,如果只有乙個結點,需要對尾結點進行處理

if(delnode->next!=

null

)else

free

(delnode)

; list->size--

;}

2.12指定元素刪除
//指定元素刪除

void

erase_val

(dulist* list, data data)

node* prevnode = delnode->prev;

//儲存上乙個結點

prevnode->next = delnode->next;

delnode->next->prev = prevnode;

free

(delnode)

; list->size--

;}

2.13排序
//排序

void

sort

(dulist* list)

for(node* i = list->front->next; i->next!=

null

; i=i->next)}}

}

2.14清除
//清除

void

clear

(dulist* list)

while

(list->front->next!=

null

) list->size =0;

}

2.15銷毀

//銷毀

void

destory

(dulist*

* list)

2.16反轉

//反轉

void

reverse

(dulist* list)

node* curnode = list->front->next;

node* prevnode =

null

; node* nextnode =

null

; list->tail = curnode;

while

(curnode!=

null

) list->front->next = prevnode;

prevnode->prev = list->front;

}

2.17求大小
int

size

(dulist* list)

Linux學習第五課

vim編輯器 vi編輯器的提公升版 1 使用簡單 2 使用範圍廣 ctrl shift 增大字型 ctrl 縮小字型 三種模式 esc a,i,o 參考記事本 2 命令模式 複製 剪下 貼上 esc 搜尋 3 末行模式 儲存 退出 設定編 輯器環境設定 w 儲存 q 退出 wq 儲存並退出 wq 強...

HTML學習第五課

定義列表的 也叫做描述性列表,定義列表預設為為兩個層次,第一層為列表項標籤 dt 第二層為注釋項標籤 dd dt 和 dd 標籤通常是成對使用的,也可以乙個列表項對應於幾個解釋項,其格式為 第1項 注釋1第二項 注釋2第三項 注釋3 table 標籤定義html 簡單的html 由table 元素以...

C 第五課 迴圈結構

迴圈結構 一 while語句 while語句寫法 while 表示式 語句 作用 反覆執行語句 迴圈體 直至 表示式 不成立。迴圈體為多條語句時,使用復合語句 二 for語句 for語句寫法 for 表示式1 表示式2 表示式3 語句 特別注意迴圈控制變數 就是決定迴圈執行次數的變數 的使用 一定要...