后会无期_
2017-06-07 17:23
#include <stdio.h> #include <stdlib.h> struct weapon{ int price; int atk; struct weapon * next; }; //【需要一个创建链表的函数,返回值是链表的头指针】 struct weapon * create() { struct weapon *head; struct weapon *p0 = NULL,*p1;//3个指针都用来指向struct weapon类型数据,head是头指针,p0p1指向链表上一个节点和当前新创建的节点。 int n=0;//记录当前节点个数 head = NULL;//一开始链表不存在,置空,然后下面进入大批量输入数据的过程 while(n>=0) { n++; //需要开辟一个新的动态存储区,把这个的地址载给p1 p1=(struct weapon*)malloc(sizeof(struct weapon)); scanf("%d,%d",&p1->price,&p1->atk);//开辟后输入数据 if(p1->price==0)break; if(n==1) { head=p1; }else{ p0->next=p1;} p0=p1;//保留p1当前所指向的的地址至p0 } p0->next=NULL;//将最后一个节点的指针置空 return(head); } int main() { struct weapon *p;//创建一个结构体指针 p=create();//调用create函数p成为链表的头指针 printf("%d,%d\n",p->price,p->atk);//打印第一个节点的信息,p默认是指向第一个节点的 return 0; }
可以,但是你必须从下一个节点开始
Linux C语言结构体
118294 学习 · 162 问题
相似问题