單鏈表的應用

2021-10-10 11:16:34 字數 2270 閱讀 9093

前言:

上一節通過學習單鏈表,知道單鏈表的是隨機訪問結構,要獲取元素的元素必須從頭指標出發順序查詢,因此也稱為順序訪問的訪問結構,使用單鏈表可以克服陣列鍊錶需要預先知道資料大小的缺點,實現靈活的動態記憶體管理。

這裡我們用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。...