【數據結構】C語言實現鏈表的創建及遍歷鏈表


有半年沒有用C寫代碼了,現在在學習數據結構,寫了點代碼,發現了很大的問題。一直以來我感覺自己C語言算不上精通,但是基本語法大多數也全都掌握的差不多了,但是今天寫代碼的時候,要通過scanf函數給一變量賦值時,居然忘寫 & 符號,這無異於啪啪給我兩巴掌啊,這么簡單的語法居然給忘記了,我相信也有不少人和我差不多,都是眼高手低的家伙,以為自己以前學過,就懶得在練習了,可是到真寫的時候還寫不出來。看來以后還是要多寫代碼才行,大家一起加油哦,好了不說了,上代碼了。

 

只是一段簡單的代碼希望和菜鳥一起學習,注釋不對的地方,請大牛指點。

 還有就是這只是一個非循環單鏈表···········

/*
            鏈表創建及遍歷

       編譯環境:VC++ 6.0
       編譯系統:windows XP SP3
*/
#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 == NULL
    pHead = CreateList();         //     創建一個非循環單鏈表,並將該鏈表的頭結點的地址付給pHead
    TraverseList(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;                             // 將頭節點的指針給予臨時節點p

    while(NULL != p)                                //節點p不為空,循環

    {
        printf("%d ",p->member);                    
        p = p->pNext;                                
    }
    printf("\n");
    return ;



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM