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