#include<stdio.h>
#include<stdlib.h>//需要用到malloc函数
struct Team
{
int number;//球衣号码(0~100)
char name[10];
struct Team *next;//用于指向下一个节点
};
struct Team *massage()
{
//head 用来作为第一个节点
struct Team *head;
//p1用来定位下一个节点,p2用来指向p2定位的节点,说简单点就是依靠它俩将节点链接
struct Team *p1,*p2;
//先使head指向空
head = NULL ;
//sizeof函数判断Team结构体的大小 malloc函数将根据返回的大小开辟一个空间,链表就是一个个被开辟的空间相连
p1=(struct Team*)malloc(sizeof(struct Team));
head = p1;
p2 = p1;
//第一个空间的内容
scanf("%d %s",&p1->number,p1->name);
while(p1->number >= 0 && p1->number <= 100)
{
//再次开辟新的空间
p1 = (struct Team*)malloc(sizeof(struct Team));
p2->next = p1;
p2 = p1;
//再次开辟的空间的内容
scanf("%d %s",&p1->number,p1->name);
}
p2->next = NULL;
return(head);
}
void print(struct Team *pt)
{
struct Team *p;
p = pt;
if(p!=NULL)
{
do
{
printf("%d %s\n",p->number,p->name);
p = p->next;
}while(p!=NULL);
}
}
int main()
{
struct Team *pt;
pt = massage();//创建并输入信息
print(pt);//打印信息
return 0;
}
这里是最关键的部分原理
再利用 p2 = p1 使得p2指向地址2 如此便可重复地开辟空间