#include <stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct play{
int id;
char name[20];
struct play *next;
}PLAY;
//创建链表
PLAY * build(int num){
PLAY *head,*playnew,*playend;
head=(PLAY *)malloc(sizeof(PLAY));//头结点分配空间
if (head == NULL)
{
return NULL;
}
playend=head;//playend始终指向尾结点
playnew=NULL;
int i;
for(i=0;i<num;i++){
playnew=(PLAY *)malloc(sizeof(PLAY));
printf("请输入玩家编号:");
scanf("%d",&playnew->id);
printf("请输入玩家姓名:");
scanf("%s",&playnew->name);
playend->next=playnew;//此时的playend就是head,将head头结点与新节点playnew相连
playnew->next=NULL;//使playnew节点为尾结点,使尾节点的下一内存地址为null
playend=playnew;//使playend成为尾结点
playend->next=NULL;//使尾节点的下一内存地址为null
}
return head;
}
//链表遍历
printinto(PLAY *play,int num){
play=play->next;//取出第一个有效节点(即头结点的next)
int i;
for(i=0;i<num;i++){
printf("玩家编号为:%d\n",play->id);
printf("玩家名称为:%s\n",play->name);
play=play->next;//当前节点往下移动一位,playr指向下一个有效节点
}
}
int main(){
PLAY *head;
head=NULL;
int num=3;
head=build(num);
printinto(head,num);
return 0;
}
C语言单向链表的新建以及遍历输出
最新推荐文章于 2023-05-07 00:49:01 发布