一個簡單的單鏈表實現

#include <iostream>

using namespace std;

#define N 10 /*N爲個數*/

typedef struct node
{
    int val;
    struct node *link;
}Node;

Node* creat(int n) /*建立單鏈表的函數,形參n爲個數*/
{
    Node *p,*h,*s; /* *h保存表頭結點的指針,*p指向當前結點的前一個結點,*s指向當前結點*/
    int i; /*計數器*/
    h = new Node();
    //if((h=(Node *)malloc(sizeof(Node)))==NULL) /*分配空間並檢測*/
    if(h==NULL) /*分配空間並檢測*/
    {
        cout<<"不能分配內存空間!";
        return 0;
    }
    h->val=0; /*把表頭結點的數據域置空*/
    h->link=NULL; /*把表頭結點的鏈域置空*/
    p=h; /*p指向表頭結點*/
    for(i=0;i<n;i++)
    {
        s = new Node();
        if(s==NULL) /*分配新存儲空間並檢測*/
        {
            cout<<"不能分配內存空間!";
            return 0;
        }
        p->link=s; /*把s的地址賦給p所指向的結點的鏈域,這樣就把p和s所指向的結點連接起來了*/
        s->val=i+1; /*當前結點s的數據域中賦值操作*/
        s->link=NULL; /*尾指針爲NULL*/
        p=s;
    }
    return h;
}
int main()
{
    int i;
    int number; /*保存節點的變量*/
    Node *head; /*head是保存單鏈表的表頭結點地址的指針*/
    number=N;
    head=creat(number); /*把所新建的單鏈表表頭地址賦給head*/


    //輸出整個單鏈表
    Node* p = head->link;   //p指向第一個節點
    for(i=0;i<number;i++)
    {
        cout<<p->val<<endl;
        p=p->link;
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章