動態資料結構 鍊錶

2021-10-01 14:01:58 字數 2066 閱讀 3115

#include

#include

//引用malloc()函式

//結點結構體

struct node

;//不要忘了分號

//頭尾指標定義

struct node* phead=

null

;//全域性變數

struct node*pend=

null

;//全域性變數

//尾插法

void

addlisttail

(int a)

//頭插法

void

addlisthead

(int a)

//頭結點初始化

void

initlisthead()

//建立結點,多次出現同樣的**可以封裝成函式

struct node*

createnode

(int a)

//結點資料賦值

ptemp->a=a;

ptemp->pnext=

null

;//返回結點

return ptemp;

}//遍歷鍊錶

void

scanlist()

printf

("\n");

}//任意位置插入結點

void

addlistrand

(int index,

int a)

//找index結點

struct node*ptemp=

selectnode

(index);if

(ptemp==

null

)//找到了index結點

if(ptemp==pend)

else

}//查詢指定結點,並返回結點位址

struct node*

selectnode

(int a)

ptemp=ptemp->pnext;

}return

null;}

//刪除第乙個儲存資料的結點

void

deletehead()

//刪除

//記住

struct node*ptemp=phead->next;

//轉移指標

phead->next=phead->next->next;

//釋放

free

(ptemp);}

//刪除尾

void

delecttail()

if(phead->next==pend)

//有乙個結點

else

//有多個結點

ptemp=ptemp->next;

}//ptemp就是尾結點的前乙個結點

//釋放尾結點

free

(pend)

; pend=ptemp;

//尾結點指標域賦值null

pend->next=

null;}

}//刪除任意結點

void

delectnoderand

(int a)

//找a結點

struct node*ptemp=

selectnode

(a);

if(ptemp==

null

)//找到了a結點

//找a結點前乙個結點

if(phead->next==pend)

//只有乙個結點

else

//有多個結點

pt=pt->next;

}//刪除

pt->next=ptemp->next;

free

(ptemp);}

}//釋放鍊錶

void

freelist()

phead==

null

; pend==

null;}

int main (

void

)

資料結構 動態鍊錶

鍊錶 儲存資料元素的資訊的域稱為資料域 data域 存的就是該節點要存的元素 這兩個部分組成起來的資料稱之為節點 node node data next 單鏈表 只包含乙個指標域的節點組合起來的,叫做單鏈表,只知道下乙個節點位址 雙鏈表 對於乙個節點而言,需要兩個位址,要知道上乙個節點的位址和下乙個...

鍊錶 動態資料結構

1 什麼是鍊錶 動態陣列 棧和佇列 底層依託靜態陣列 靠resize解決固定容量問題 鍊錶 class node 2 鍊錶操作 新增元素 1 在煉表頭新增元素 node.next head head node public void addfirst e e 2 在鍊錶中間新增元素 find pre...

動態資料結構 動態建立鍊錶

include include struct weapon struct weapon create 需要乙個建立鍊錶的函式,函式的返回值型別是struct weapon 型別 p2 next null return head int main 總結 p1用來儲存當前的節點,建立完後掛在前面節點後面...