入門 鍊錶的基本操作

2021-07-06 10:32:16 字數 3155 閱讀 3372

標籤:c語言 鍊錶

by 小威威

c語言有三大重要部分:流程控制、函式、指標。

對於指標,單單了解它的簡單應用是不夠的,最重要的還是學習鍊錶。許多參考書對鍊錶的基本操作的概括還是不大完整的,所以在此通過這篇博文介紹鍊錶的幾種常用操作,以幫助初學者入門鍊錶。

1)鍊錶的建立;

2)鍊錶的輸出;

3)鍊錶結點的插入;

4)鍊錶結點的刪除;

5)鍊錶各結點指向的倒置;

6)鍊錶的粉碎。

補充:入門基本操作以後,可以進行其他操作:如各種型別的排序,這裡就不介紹了,在以後的博文可能會介紹。

# include 

# include

struct student ;

struct student *establish(void); // 建立鍊錶的函式的宣告

struct student *lessen(struct student *head, int num); // 刪除結點的函式的宣告

struct student *insert(struct student *head, int num, struct student *node); // 插入結點的函式的宣告

struct student *reserve(struct student *head); // 鍊錶指向倒置的函式的宣告

void output(struct student *head); // 輸出鍊錶的函式的宣告

void deletelist(struct student *head); // 粉碎鍊錶的函式的宣告

int n; // 定義全域性變數,表示鍊錶中結點的個數

int main(void)

struct student *establish(void)

p2->next = null; // 迴圈結束後,p2就是最後乙個結點,故將其儲存的位址區間置空

free(p1); // 此時的p1起到的是結束迴圈的作用,是乙個沒有作用的結點,應該刪去,故清空其記憶體,並加以置空

p1 = null; // 將無作用的結點置空

return head; // 返回頭指標

}struct student *lessen(struct student *head, int num)

p1 = head;//把頭指標賦給p1

while (p1->num != num && p1->next != null)

if (p1->num == num) else

free(p1); //清空p1,即清空刪除結點所佔的記憶體

p1 = null; //將p1置空,避免生成野指標

n -= 1; //結點數減少乙個

} else

return head; //返回頭指標

}struct student *insert(struct student *head, int num, struct student *node) else

if (p1->num == num) else

return head; // 返回頭指標

}struct student *reserve(struct student *head)

head = p1; // 迴圈結束時,p1對應的就是新鍊錶的第乙個結點,故將其位址賦給頭指標

return head; // 返回頭指標

}void output(struct student *head)

return;

}void deletelist(struct student *head)

}

1)鍊錶的建立

struct student *establish(void) 

p2->next = null; // 迴圈結束後,p2就是最後乙個結點,故將其儲存的位址區間置空

free(p1); // 此時的p1起到的是結束迴圈的作用,是乙個沒有作用的結點,應該刪去,故清空其記憶體,並加以置空

p1 = null; // 將無作用的結點置空

return head; // 返回頭指標

}

2)鍊錶的輸出

void output(struct student *head) 

return;

}

3)鍊錶結點的插入

struct student *insert(struct student *head, int num, struct student *node)  else 

if (p1->num == num) else

return head; // 返回頭指標

}

4)鍊錶結點的刪除

struct student *lessen(struct student *head, int num) 

p1 = head;//把頭指標賦給p1

while (p1->num != num && p1->next !=

null)

if (p1->num == num) else

free(p1); //清空p1,即清空刪除結點所佔的記憶體

p1 =

null; //將p1置空,避免生成野指標

n -=

1; //結點數減少乙個

} else

return head; //返回頭指標

}

5)鍊錶結點指向的倒置

struct student *reserve(struct student *head) 

head = p1; // 迴圈結束時,p1對應的就是新鍊錶的第乙個結點,故將其位址賦給頭指標

return head; // 返回頭指標

}

6)鍊錶的粉碎

void deletelist(struct student *head)
1.分配動態記憶體要注意釋放並清空;

2.某些指標變數的初始化;

3.建立鍊錶完成後記得將最後乙個結點的位址區間置空;同樣的,指向倒置時,記得將第乙個結點的位址賦給頭指標。

鍊錶的基本操作

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...