什么是鏈表?當你用一個數組存放數據時就需要給它定義一個長度,如果定一個未知的數據,你就需要擴大數組的范圍,有時如果由于某種特殊原因,數據增加,有需要重新修改程序,擴大數組的存儲范圍,鏈表就是一種更加簡便,不受限制的存儲方式,只需要根據分配內存單元即可存儲的方式結構。
處理鏈表需要哪些函數?
C提供了一些內存管理函數這些內存管理函數就可以為你分配內存空間。
- malloc()函數
- calloc()函數
- free()函數
- reallo()函數
在執行程序的過程中先一個一個開辟結點然后在每一個結點中輸入數據。由于程序是為了實現某一功能而設計的程序所以下面我將舉例來說明如何建立動態鏈表?
舉一個建立n個整數的單鏈表的例子,由于本人能力有限,不過建立一個動態鏈表還是很容易的。
建立一個n個整數的單鏈表,我用兩個函數來實現分別是creatlist函數和printlist函數,它們的功能一個是創建,一個是輸出。
首先定義一個結構體的類型,這個結構體類型包括一個整形成員和一個指向結構體類型的指針成員。然后我們在輸出函數中設三個指針變量,頭指針,指向當前節點的指針和指向當前節點的前一個節點的指針。
第一,用malloc()函數分配第一個結點,用head指向該結點,然后用r指向該結點。
第二,繼續用malloc()函數做第一個結點,s指向新結點,向s輸出數據,然后用r的next指向s,r再指向s。
第三,重復操作,一直創建到第n個整數型的單鏈表為止。再用printlist函數輸出。就好啦!
具體代碼如下:
struct node
{
int date;
struct node*next;
};
struct node*creatlist(into n)
{
struct node*head ,*s,*r;
int i=0;
if((head=strucr node*)malloc(sizeof(struct node)))==NULL)
{
printf("error!");
return 0;
}
head_>next=NULL;
r=head;
for(i=1;i<n;i++)
{
if((s=(struct node*)malloc(sizeof(struct node)))==NULL)
}
}
希望看完的你動動小手點個關注,你的點贊就是對我最大的鼓勵。