#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; }