鍊錶的基本操作

2021-08-20 19:00:49 字數 2169 閱讀 9734

單鏈表的建立

結點建立:我們假設要建立的鍊錶的資料域用來儲存學生資訊,即姓名,學號和成績:

typedef struct student

stu;

接下來先用尾插法(即新增結點在尾部插入)建立鍊錶:
#include #include typedef struct student stu; stu *creat(int n)    //n作為被傳遞的引數代表要建立的鍊錶的結點個數,函式返回值型別是結點指標型別 p->next=null;    //迴圈外讓p的指標域為空,因為這是最後乙個結點

} else head=null; return head;    //返回頭指標 } int main() } else printf("這是乙個空鍊錶!");    //n為0時鍊錶沒有結點 }

自己寫的**可能有許多不足之處,不過意思應該差不多了

下面看一下頭插法(即新增結點總是插入頭部):

#include #include typedef struct student

stu;

stu *creat(int n)

} else

head=null;

return head;

}int main()

} else

printf("這是乙個空鍊錶!");

}

這兩種方式建立的鍊錶結點會剛好是反向的:

例如,如果執行上面兩段程式,結果如下:

輸入鍊錶節點的個數:3

請輸入姓名,學號,分數:張三 11 78

請輸入姓名,學號,分數:李四 12 85

請輸入姓名,學號,分數:王五 13 92

第一段:

姓名    學號    分數

-------------------

張三    11      78

李四    12      85

王五    13      92

第二段:

姓名    學號    分數

-------------------

王五    13      92

李四    12      85

張三    11      78

單鏈表的遍歷

其實在上面兩段**的主函式中已經有這種思想了,只是並沒有作介紹,我們把這種思想提出來單獨看一下,以和上面結構一樣的鍊錶為例,寫乙個遍歷資料並輸出的子函式:

void print(stu *h)	//h做函式引數,這裡將要接收的是指向鍊錶首結點的指標 

}

單鏈表的插入

第一種情況,在鍊錶首部插入新結點:

stu *insert1(stu *h,int *pn)

/*h做函式引數,這裡將要接收的是指向鍊錶首結點的指標,pn是指向n的指標,下面要用到它改變n的值以統計新鍊錶結點個數*/

第二種,在尾部插入:

stu *insert2(stu *h,int *pn)

/*h做函式引數,這裡將要接收的是指向鍊錶首結點的指標

pn是指向n的指標,下面要用到它改變n的值以統計新鍊錶結點個數*/

第三種,在首尾之間插入,假設要在學號為number的學生的位置後插入:
stu *insert3(stu *h,int *pn,int number)

/*h做函式引數,這裡將要接收的是指向鍊錶首結點的指標

pn是指向n的指標,下面要用到它改變n的值以統計新鍊錶結點個數*/

單鏈表的刪除

刪除也是在遍歷的基礎上進行操作的,思想就是先找到要刪除的結點,再讓它前面乙個結點的指標域指向它的後面乙個結點,還是用同乙個鍊錶,假設要刪除儲存學號為number的學生資訊的結點:

stu *delete(stu *h,int *pn,int number)

/*h做函式引數,這裡將要接收的是指向鍊錶首結點的指標

pn是指向n的指標,下面要用到它改變n的值以統計新鍊錶結點個數*/

單鏈表的基本操作就這些啦,分享到此結束。

鍊錶的基本操作

include include include include using namespace std struct listnode void initnode listnode node bool isempty listnode head void pushfront listnode hea...

鍊錶的基本操作

鍊錶操作是最基本的 必須掌握的知識點,最好滾瓜爛熟,透徹理解。工作時間短用的也不夠頻繁,還是總結一下比較好,以加強鞏固。1.單鏈表 結點形式 區分幾個概念 首節點 第乙個元素所在節點。頭指標 指向首節點的指標。頭結點 為了操作方便,在第乙個節點之前附設的乙個結點,此時指向頭結點的為頭指標。基本操作 ...

鍊錶的基本操作。。。

include node.h 列印鍊錶 void print node head printf n 從尾部插入 void insert tail node head,const int d while t next null t next p p next null 從頭部插入 void inser...