#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int num;
struct node *link;
}Node;
Node *create(int n)
{
//h为头结点指针,t为当前结点指针,pre为
//当前结点前一个结点指针
Node *h,*pre,*t;
int number;
if((h=(Node *)malloc(sizeof(Node)))==NULL)
{
printf("分配头结点内存不成功!");
exit(0);
}
h->num=0;
h->link=NULL;
pre=h; //当前结点前一结点指针被设成头结点指针
for(int i=0;i<n;i++)
{
//为每新增的结点分配内存,并返回地址给t
if((t=(Node *)malloc(sizeof(Node)))==NULL)
{
printf("分配第%d个结点内存不成功!",i+1);
exit(0);
}
printf("请输入第%d个数据:",i+1);
scanf("%d",&number);
//将当前结点链接到前一个结点之后
pre->link=t;
//为当前结点分配数据
t->num=number;
t->link=NULL;
//更新结点,当前结点变成头当前结点前一个结点
pre=t;
}
printf("你输入的%d个数分别为:",n);
Node *now=h->link;
for(int j=0;j<n;j++)
{
printf("%d ",now->num);
now=now->link;
}
return h;
}
void main()
{
Node *n;
n=create(4);
free(n);
}