-
標準函式用於鍊表操作中的動態儲存分配,首先介紹這些函式。
1)malloc(size)
在記憶體的動態儲存區域中請求大小位元組的連續空間。
2)calloc(n,size)
在記憶體的動態儲存區域中,可以請求 n 個長度為位元組大小的連續空間,函式的返回值為分配空間的第乙個位址。 如果函式未成功執行,則該函式返回值 0。
3)free(p)
釋放指標 p 指向的儲存單元,其大小是最近呼叫 malloc() 或 calloc() 函式時請求的儲存空間。
在標頭檔案中"stdlib h“包含有關這些函式的資訊,應在程式的開頭使用檔案include指令include”stdlib h“指示。
另請注意,呼叫動態儲存分配函式返回的指標是指向 void 型別或 char 型別的指標,在特定用途中使用時,需要根據其指向的資料進行強制型別轉換。
建立單鏈表有兩種方法:標題插入和尾隨插入。
1 頭插拔。
單個鍊表是使用者不斷申請儲存單元並改變鏈結關係而獲得的一種特殊的資料結構,鍊表的左側稱為鏈頭,右側稱為鏈尾。 構建單個鍊表的標題插入方法是將鍊表的右端視為固定的,鍊表不斷向左延伸。 使用頭部插入方法得到的第一件事是尾節點。
由於鍊表的長度是隨機的,因此使用 while 迴圈來控制鍊表中的節點數。 假設每個節點的值都大於 o,則迴圈條件是輸入值大於 o。 儲存空間的應用可以通過使用 malloc() 函式來實現,這需要設定乙個單元指標,但 malloc() 函式獲取的指標不是指向結構的指標,需要使用強制型別轉換將其轉換為結構指標。
一開始,鍊表還沒有建立,它是乙個空的鍊表,並且頭部指標為 null。
建立鍊表的過程是申請空間、獲取資料、建立鏈結的迴圈過程。
2 尾部插入。
如果鍊表的左端是固定的,並且鍊表繼續向右延伸,則這種建立鍊表的方法稱為尾插值。 當通過尾部插入方法建立鍊表時,頭部指標是固定的,因此必須設定乙個搜尋指標向鍊表右側延伸,並且在整個演算法中應設定三個鍊表指標,即頭部指標頭、搜尋指標P2和應用單元指標PL。 尾部插值方法得到的第一件事是頭節點。
-
單鏈表是指資料聯絡人的單向排列。 結構型別分為兩部分的單向鍊表節點:
1.資料域:用於儲存自己的資料。
示例:typedef struct node
stud;這定義了單向鍊表的結構,其中 char name[20] 是用於儲存名稱的字元陣列,指標 *link 是用於儲存其直接繼承者的指標。
定義鍊表結構後,只要在程式執行時將適當的資料儲存在資料字段中,如果有後繼節點,則鏈域將指向其直接後繼節點,如果沒有,則為空。
單鏈表中每個節點的儲存位址都儲存在其前置節點的下乙個欄位中,並且起始節點沒有前置節點,因此應將頭指標設定為指向起始節點。
注意:鍊表由頭指標唯一確定,單個鍊表可以由頭指標的名稱命名。
讓我們看一下建立帶有標題的單鏈表的完整過程(除非另有說明,否則下面引用的鍊表都具有標題)。
#include <
#include <
#define n 10
typedef struct node
stud;stud * creat(int n)
h->name[0]='\0';
h->link=null;
p=h;for(i=0;i<n;i++)
p->link=s;
printf("請輸入個人 %d 的姓名",i+1);
scanf("%s",s->name);
s->link=null;
p=s;return(h);
main()