用C語言實現鏈表,附代碼註釋
這裏給已經在學C和數據結構的小夥伴提供一些彈藥支持,雖然不知道管不管用,在這裏大佬就勿擾了吧!哈哈!
在實現一個簡單的鏈表前需要用到哪些知識點呢?
- C語言基礎知識,比如要用到的結構體、指針、函數、運算
- 一點數據結構的知識,在學習數據結構也能看到鏈表的身影,我們這裏實現的是單項鍊表
- 有手,有腦
現在上代碼:
# include<stdio.h>
# include<malloc.h>
//創造鏈表
//定義一個節點類型
typedef struct node{
int data;
char name[10];
struct node *next;
}noDe,* pnoDe;
// 輸入函數
pnoDe funkin(void){
pnoDe pHead = (pnoDe)malloc(sizeof(noDe)); //定義頭指針和尾指針分別指向頭和尾節點
pnoDe ptail = pHead;
ptail->next = NULL;
int n,score; //有效節點的數量
char name[10];
printf("please funkin a number:");
scanf("%d",&n);
// 連續輸入學生及成績數據
for(int i=0;i<n;i++){
pnoDe pNew = (pnoDe)malloc(sizeof(noDe));
printf("please scanf the score of number %d :",i+1);
scanf("%d %s",&(pNew->data),pNew->name);
/*核心代碼*/
ptail->next = pNew; //讓尾節點指針指向新節點
ptail = pNew; //讓尾指針指向新節點 ,並移動到下一個節點
ptail->next = NULL; //讓新節點指針域爲空
}
return pHead;
}
// 輸出函數
void out(pnoDe pHead){
int k = 1;
pnoDe p = pHead->next;
while(p != NULL){
printf("\nfunkout number %d: ",k);
printf("score= %d\nname= %s\n",p->data,p->name);
p = p->next;
k++;
}
return;
}
int main(void){
pnoDe pHead = NULL;
pHead = funkin();
out(pHead);
return 0;
}
代碼並不難懂,大概就是先輸入需要創建的節點數或有效數據個數,之後創建了一個會構造鏈表的函數,並返回頭指針。這個時候鏈表其實已經創建好了,並且已經放入了數據。之後,輸出函數out()會輸出數據。ok,就是這麼簡單!覺得可以就點贊加關注,博主會定期更新哦!哈!最後附上個人博客鏈接:碼里奧博客