#include <stdlib.h>
#include <stdio.h>
struct test{
int value;
struct test *next;
};
struct test* create(){ //创建create 函数,返回 struct test* 结构指针 返回的是头部指针
test *head,*tail,*p;
head=tail=NULL;
//head 是保存头部指针,p是当前指针,tail是临时替换的指针,是用来过度的
int i;
while(scanf("%d",&i)==1)
{
//(数据类型)malloc(sizeof(数据类型)) 动态分配内存,一定要记得用free() 消毁
p=(struct test*)malloc(sizeof(struct test)); //创建结构并开屁空间
p->value=i;
p->next=NULL;
if(head==NULL)
{
head=tail=p; //保存头部指针 并且关联 指针 p,也就是返回的head 可以关联到 p
}
else{
tail=tail->next; //第二次set tail->next 有值了 相当于移动两个变量 的指针
//保存上一次指针
}
tail->next=p; //当前指针追加在未尾;
}
return head;
};
int main(int argc, char* argv[])
{
struct test *p,*n;
p=create();
while(p)
{
printf("%d\n",p->value);
n=p->next;
free(p);
p=n;
}
return 0;
}