標籤: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...