#include?<stdio.h>
#include?<stdlib.h>
struct?weapon{
????int?price;
????int?atk;
????struct?weapon?*?next;
};
//【需要一個(gè)創(chuàng)建鏈表的函數(shù),返回值是鏈表的頭指針】
struct?weapon?*?create()
{
????struct?weapon?*head;
????struct?weapon?*p0?=?NULL,*p1;//3個(gè)指針都用來指向struct?weapon類型數(shù)據(jù),head是頭指針,p0p1指向鏈表上一個(gè)節(jié)點(diǎn)和當(dāng)前新創(chuàng)建的節(jié)點(diǎn)。
????int?n=0;//記錄當(dāng)前節(jié)點(diǎn)個(gè)數(shù)
????head?=?NULL;//一開始鏈表不存在,置空,然后下面進(jìn)入大批量輸入數(shù)據(jù)的過程
????while(n>=0)
????{
????????n++;
????????//需要開辟一個(gè)新的動(dòng)態(tài)存儲區(qū),把這個(gè)的地址載給p1
????????p1=(struct?weapon*)malloc(sizeof(struct?weapon));
????????scanf("%d,%d",&p1->price,&p1->atk);//開辟后輸入數(shù)據(jù)
????????if(p1->price==0)break;
????????if(n==1)
????????{
????????????head=p1;
????????}else{
????????????p0->next=p1;}
????????p0=p1;//保留p1當(dāng)前所指向的的地址至p0
????????????}
????p0->next=NULL;//將最后一個(gè)節(jié)點(diǎn)的指針置空
????return(head);
}
int?main()
{
????struct?weapon?*p;//創(chuàng)建一個(gè)結(jié)構(gòu)體指針
????p=create();//調(diào)用create函數(shù)p成為鏈表的頭指針
????printf("%d,%d\n",p->price,p->atk);//打印第一個(gè)節(jié)點(diǎn)的信息,p默認(rèn)是指向第一個(gè)節(jié)點(diǎn)的
????return?0;
}
2017-06-07
可以,但是你必須從下一個(gè)節(jié)點(diǎn)開始