我們在儲存一大堆數(shù)的時候經常使用數(shù)組,可是數(shù)組有時候會不太靈活如:
有一列已經從小到大排好序的數(shù)字2 3 5 8 9 10 12.現(xiàn)在要插入6使得仍然是從小到大排列.
用數(shù)組則我們需要把8及其后面所有數(shù)字向后挪一位如下圖一部分.
那么什么是鏈表呢?如下圖二部分.三部分是鏈表中插入數(shù)的實現(xiàn)方法.
在C語言中用指針和動態(tài)內存分配函數(shù)malloc來實現(xiàn).
鏈表由很多結點構成,而每一個結點都由倆部分構成,左邊的部分用來存儲數(shù)值,右邊的存儲下一個結點的地址
代碼實現(xiàn)
#include#include//調用malloc函數(shù)用的頭文件
struct ch
{int date ;
struct ch *next;//因為下一個結點類型也是struct ch所以指針類型也是這個
};//創(chuàng)造一個結構類型來表示結點
int main()
{struct ch *head,*p,*q,*t;//p,q臨時指針用來輸入創(chuàng)造鏈表,t用來輸出,head頭指針,指向鏈表的第一個結點
int i,n,a;//i,n用來循環(huán)輸入,a用來暫時儲存輸入的數(shù)字
scanf("%d",&n);
head=NULL;//將頭函數(shù)初始為空
for(i=0;iscanf("%d",&a);
p=(struct ch*)malloc(sizeof(struct ch));//將malloc類型強制轉換并將p指向動態(tài)分配的內存空間地址
p->date=a;
p->next=NULL;//給這個結點賦值并將結點的指針部分初始為空
if(head==NULL){ head=p;//如果這是第一個結點就讓頭指針指向他
}else{ q->next=p;
}//如果不是就讓上一個結點的指針指向他
q=p;
}//循環(huán)n次創(chuàng)造一個n個結點的鏈表
t=head;
while(t!=NULL){printf("%d ",t->date);
t=t->next;
}
return 0;
}
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧