日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于链表的简单创建和遍历

發布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于链表的简单创建和遍历 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


這是網上的的源碼:

#include <stdio.h> #include <stdlib.h> #include <malloc.h>// 定義鏈表中的節點 typedef struct node {int member; // 節點中的成員struct node *pNext; // 指向下一個節點的指針 }Node,*pNode;// 函數聲明 pNode CreateList(); // 創建鏈表函數 void TraverseList(pNode ); // 遍歷鏈表函數int main() {pNode pHead = NULL; // 定義初始化頭節點,等價于 struct Node *pHead == NULLpHead = CreateList(); // 創建一個非循環單鏈表,并將該鏈表的頭結點的地址付給pHeadTraverseList(pHead); // 調用遍歷鏈表函數return 0; }// 創建鏈表函數 pNode CreateList() {int i; // 用于下面循環int len; // 用來存放有效節點的字數int val; // 用于臨時存放用戶輸入的數據pNode pHead = (pNode)malloc(sizeof(Node)); // 分配一個不存放有效數據的頭結點pNode pTail = pHead; // 鏈表的最后一個節點pTail->pNext = NULL; // 最后一個節點的指針置為空printf("請輸入節點個數:");scanf("%d",&len);for(i = 0; i < len; i++){printf("第 %d 個節點的數值:",i+1);scanf("%d",&val);pNode pNew = (pNode)malloc(sizeof(Node)); // 為節點分配空間pNew->member = val; //將用戶輸入的數據賦給節點的成員pTail->pNext = pNew; //將最后一個節點的指針指向下一個新的節點pNew->pNext = NULL; //將新節點中的指針置為空pTail = pNew; //將新節點賦給最后的一個節點}return pHead; //返回頭節點}// 遍歷鏈表函數 void TraverseList(pNode pHead) {pNode p = pHead->pNext; //將頭節點的指針給予臨時節點pwhile(NULL != p) //節點p不為空,循環{printf("%d ",p->member); p = p->pNext; }printf("\n");return ;}

自己照著視頻敲了一遍,結果卡在一個點上

#include<stdio.h> //創建非循環鏈表 #include<stdlib.h> #include<malloc.h> typedef struct Node { int data; struct Node *pNext; }NODE,*PNODE;//相當于直接給了個*號 struct Node *int main(void) {PNODE pHead =NULL;//相當于 struct Node *pHead =Null;先定義清空指針 pHead = create_list();traverse_list(pHead);return 0; }PNODE create_list(void); {int len,i,val;PNODE pHead=(PNODE)malloc(sizeof(Node));//分配pHead pintf("請輸入你要生成幾個節點");scanf("%d",&len);PNODE pTail=pHead;pTail->pNext=NULL;for(i=0;i<len;i++){printf("請輸入第%d個數",i+1);scanf("%d",&val);PNODE pNew =(PNODE)malloc(sizeof(Node));//分配pNew pNew->data= val;pTail->pNext=pNew;pNew->pNext=NULL;pTail=pNew; }return pHead; }void traverse_list(PNODE pHead) {PNODE p = pHead->pNext; //將頭節點的指針給予臨時節點pwhile(NULL != p) //節點p不為空,循環{printf("%d ",p->data); p = p->pNext; }printf("\n");return;}


老是說定義的函數類型沖突,哪有沖突啊,不是返回地址型嘛,都是用PNODE的啊,咋就錯了呢,比較了一下上面的代碼感覺都一樣就是不知道哪里出了bug,改天再看看。

創造鏈表:先分配內存,給數據域賦值,將尾結點指向臨時節點,再將臨時節點指向空,最后將臨時節點賦給尾結點。
就像一條蛇一樣,先創造一個東西,然后將它吞并,再創造下一個東西,再吞并。

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
#######################################################################################

今天我又重新檢查了一遍上面的代碼,一個一個比對終于發現了問題

首先函數后面能加分號嘛?昨天檢查了那么多遍還是沒搞出來,的確是狀態不好。這么低級的錯誤都沒發現,這個函數又不是放在主函數里的。需要加什么分號。


其次結構體和主函數之間是需要添加函數聲明的,我一直以為這只是個形式,我以前從來沒遇到過函數還要聲明的情況,函數不是只能調用嗎…也只有變量需要聲明吧(手動滑稽)!

第三個錯誤就是我把printf給寫漏了一個字母,這看上去讓人崩潰,幾十行幾百行的代碼,一個單詞少寫一個字母也是在所難免的啊,可程序就是不放過你的這個錯誤,行吧,我認了。

可以看到吧,這就是純手打代碼的弊端,錯誤率居高不下,找bug找到讓人崩潰。
但還是有點收獲的,自己寫的能讓自己對這個程序更加的了解、熟知,對以前不知道,不注意的地方進行補充。
同時也讓我掌握了一種學習方法,就是想不明白的,不要著急,現在不明白,可以存疑留到明天,明天甚至可以再存到后天,只要每天有點感悟就好了。

總結一下吧

  • 先構造結構體
  • 聲明函數
  • 主函數
  • 創造鏈表
  • 遍歷鏈表
  • 最難的就是構造鏈表了,想明白了,就算你鏈表入門了

    附上我改好后的鏈表(純手打)

    #include<stdio.h> //創建非循環鏈表 #include<stdlib.h> #include<malloc.h> typedef struct Node { int data; struct Node *pNext; }NODE,*PNODE;//相當于直接給了個*號 struct Node *// 函數聲明 PNODE create_list(); // 創建鏈表函數 void traverse_list(PNODE); // 遍歷鏈表函數int main(void) {PNODE pHead =NULL;//相當于 struct Node *pHead =Null;先定義清空指針 pHead = create_list();traverse_list(pHead);return 0; }PNODE create_list(void) {int len,i,val;PNODE pHead=(PNODE)malloc(sizeof(NODE));//分配pHead printf("請輸入你要生成幾個節點");scanf("%d",&len);PNODE pTail=pHead;pTail->pNext=NULL;for(i=0;i<len;i++){printf("請輸入第%d個數",i+1);scanf("%d",&val);PNODE pNew =(PNODE)malloc(sizeof(NODE));//分配pNew pNew->data= val;pTail->pNext=pNew;pNew->pNext=NULL;pTail=pNew; }return pHead; }void traverse_list(PNODE pHead) {PNODE p = pHead->pNext; //將頭節點的指針給予臨時節點pwhile(NULL != p) //節點p不為空,循環{printf("%d ",p->data); p = p->pNext; }printf("\n");return;}

    至于鏈表的刪除,插入,修改之類的,放到以后學了,有時間有心情就會來看看,慢慢來!!!
    試試如何改變字體的顏色
    試試如何改變字體的顏色

    總結

    以上是生活随笔為你收集整理的关于链表的简单创建和遍历的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。