#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;
}
一个简单的单链表实现
最新推荐文章于 2022-06-23 13:40:53 发布