1. 程式人生 > >單鏈表建立與遍歷

單鏈表建立與遍歷

不連續的儲存結構

包含n個節點,每個節點包含資料域和指標域,指標域指向下一個節點

下述連結串列指單鏈表。。  

頭結點只有指標域,是整個連結串列入口,相關的遍歷查詢都需要從頭指標開始,頭結點資料域沒有意義為一個隨機值

#include "stdafx.h"
#include <stdio.h>
#include<iostream>
using namespace std;
//建立
typedef struct student
{
    int data;
    student * Next;
}Node,*pNode;

Node* CreateList(void)
{
    int len;
    int val;
    pNode pEnd=NULL;
    pNode pHead = (Node*)malloc(sizeof(Node));
    pEnd = pHead;    //尾指標先指向頭節點,在此基礎上增加新節點
    pEnd->Next = NULL;  //此時只有一個頭結點,頭結點的next指標指向NULL
    printf("please input the len:");
    scanf("%d",&len);
    for(int i=0;i<len;i++)
    {
        printf("請輸入第 %d 個節點的資料:", i + 1);
        scanf("%d",&val);
        pNode pNew =(Node*)malloc(sizeof(Node));    //給新節點分配記憶體
        pNew->data = val;              //給新節點賦值
        pNew->Next=NULL;           //新節點下一個先為空
        pEnd->Next= pNew;         //尾指標的指標域指向新增加的節點
        pEnd = pNew;     //尾指標指向新節點,新節點變成尾節點
    }
    printf("list create success");
    return pHead;
}

//遍歷
void printlist(pNode phead)
{
    pNode p = phead->Next;
    while(p)
    {
        cout<<p->data<<endl;      //通過尾節點的指標域是否為空判斷連結串列是否已結束
        p =p->Next;
    }
}
void main()
{
    pNode mHead = CreateList();
    printlist(mHead);
    cin.get();
    cin.get();
}

其餘啥的刪除、反轉等操作均在此基礎上進行,有點繞但並不複雜,F10、F11多單步執行就行

多想點問題,一個人的矯情都是閒出來的。。