1. 建立一个学生信息的循环链表,每个节点里面包含了学生学号、姓名、籍贯三个信息。通过遍历,输出链表

用结构体

下面是源代码
#include<stdio.h>
#include<malloc.h>
#define SIZE sizeof(struct student)

struct student //定义每个节点的信息结构体
{
long number; //学号
char name[20]; //姓名
char home[50]; //籍贯
struct student *next;
}*head; //定义循环链表的表头指针

int main()
{
struct student *front=NULL,*later=NULL;
head=(struct student *)malloc(SIZE); //申请第一个结点
front=head;
scanf("%ld %s %s",&head->number,head->name,head->home);
//输入第一个学生信息,以空格隔开三样信息
for( ; front->number!=0 ; ) //以number=0为输入结束的标志
{
front->next=(struct student *)malloc(SIZE);
later=front;
front=front->next;
//使得front指向最新的结点,later指向最新结点的前面一个结点
scanf("%ld %s %s",&front->number,front->name,front->home);
}
later->next=head;
//上面的语句就已经把最后的number=0的无用结点舍去
//用最后一个学生数据的节点连接到头节点处形成循环链表

//下面进行遍历输出链表数据,front这个指针用来进行向下读取
printf("\n\n%ld %s %s\n",head->number,head->name,head->home);
for(front=head->next ; front!=head ; front=front->next)
printf("%ld %s %s\n",front->number,front->name,front->home);
//下面两句是用来停留屏幕观察结果的
getchar(); getchar();
return 0;
}
测试用例:
1 a aaa
2 b bbb
3 c ccc
0 d ddd
结果:
1 a aaa
2 b bbb
3 c ccc
希望能帮到你。如有疑问,欢迎垂询~
温馨提示:答案为网友推荐,仅供参考