#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用來儲存當前的節點,建立完後掛在前面節點後面...