前言:
上一節通過學習單鏈表,知道單鏈表的是隨機訪問結構,要獲取元素的元素必須從頭指標出發順序查詢,因此也稱為順序訪問的訪問結構,使用單鏈表可以克服陣列鍊錶需要預先知道資料大小的缺點,實現靈活的動態記憶體管理。這裡我們用c語言結合單鏈表來實現乙個可以實現增刪改查的學生管理系統。
#include
#include
#include
//定義結構屬性
struct mm
;struct node*list =
null
;struct node
;
1.建立表頭:描述最初狀態
struct node*
createlist()
2.建立結點:為插入資料做準備,把資料加工成結構體變數
struct node*
creatnode
(struct mm data)
3.表頭法插入
void
insertbyhead
(struct node*headnode,
struct mm data)
4.指定位置刪除 --以資料為指定
void
(struct node*headnode,
char
*name)
//分析查詢的結果
//迴圈退出有兩種結果:posnode==null,posnode->data==posdata;
if(posnode ==
null
)else
}
5.查詢函式
struct node*
serchinfobyname
(struct node*headnode,
char
*name)
return pmove;
}
6.列印鍊錶:
void
printlist
(struct node*headnode)
printf
("\n");
}
7.刪除功能:刪除所有相同姓名的人
void
deletebyname
(struct node*headnode,
char
*name)
}
8.介面
void
menu()
9.使用者選擇選單
void
keydown()
else
break
;case4:
printf
("請輸入刪除的學生資訊!");
scanf
("%s"
, data.name)
;(list, data.name)
;break
;case5:
printf
("請輸入要修改學生的資訊!");
scanf
("%s"
, data.name)
; result =
serchinfobyname
(list, data.name);if
(result ==
null
)else
break
;case6:
printf
("請輸入要刪除學生的資訊!");
scanf
("%s"
, data.name)
;(list, data.name)
;break
;default
:printf
("輸入錯誤!");
break;}
}
int
main()
system
("pause");
return0;
}
總結:單鏈表的可是實現資料的間斷性儲存,可以節約記憶體空間。只需要用基本的單鏈表知識就可以實現乙個管理系統了,快動手試一下吧! 單鏈表的應用
就地逆置 頭插法 有乙個線性表採用帶頭節點的單鏈表儲存,採用就地演算法將其就地逆置。思路 使用p指標掃瞄原單鏈表,現將頭節點的next置為空,然後將其他節點採用頭插法插入。就地逆置單鏈表,就地 的意思是輔助空間為o 1 public void reverse linklist l 將乙個線性表拆成兩...
單鏈表的應用舉例
例2.5 已知單鏈表h,寫一演算法將其倒置。即實現如圖2.22的操作。a 為倒置前,b 為倒置後。演算法思路 依次取原鍊錶中的每個結點,將其作為第乙個結點插入到新鍊錶中去,指標p用來指向當前結點,p為空時結束。演算法如下 void reverse linklist h 演算法2.15。該演算法只是對...
單鏈表的應用例項
1 有乙個帶頭結點的單鏈表l a1,b1,a2,b2,a3,b3 an,bn 設計乙個演算法將其拆分為兩個帶頭結點的單鏈表l1和l2,其中l1 a1,a2,a3,a4 an l2 bn,b3,b2,b1 要求l1使用l的頭節點。解 利用原單鏈表l中的所有結點通過改變指標域重組成兩個單鏈表l1和l2。...