#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;
}
一個簡單的單鏈表實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.