单向静态循环链表创建和静态链表就差循环这里。
//下面是完整c代码(直接复制粘贴到main.c中就可以执行)
#include <stdio.h>
struct StuNode
{
char *name;
char *StudentNo;
float Score;
struct StuNode *next;
}StuArray[5]={
{"zhangsan","20191100351",95.5},
{"lisi","20191100352",96.2},
{"wangwu","20191100353",94.6},
{"sunliu","20191100354",98.2},
{"zhaoqi","20191100355",99.2}
};
int main()
{
struct StuNode *header,*p;
header=&StuArray[0];
StuArray[0].next=&StuArray[1];
StuArray[1].next=&StuArray[2];
StuArray[2].next=&StuArray[3];
StuArray[3].next=&StuArray[4];
StuArray[4].next=header;
p=&StuArray[3];//因为是循环链表,随便给一个地址都可以。
printf("姓名\t\t学号\t\t分数\n");
for(int i=0;i<5;i++)
{
printf("%s\t\t%s\t\t%.2f\n",p->name,p->StudentNo,p->Score);
p=p->next;
}
return 0;
}
或者将上述代码稍作改动成以下代码(最总的结果是完全相同的)
//下面是完整c代码(直接复制粘贴到main.c中就可以执行)
#include <stdio.h>
struct StuNode
{
char *name;
char *StudentNo;
float Score;
struct StuNode *next;
}StuArray[5]={
{"zhangsan","20191100351",95.5},
{"lisi","20191100352",96.2},
{"wangwu","20191100353",94.6},
{"sunliu","20191100354",98.2},
{"zhaoqi","20191100355",99.2}
};
int main()
{
struct StuNode *header,*p;
header=&StuArray[0];
StuArray[0].next=&StuArray[1];
StuArray[1].next=&StuArray[2];
StuArray[2].next=&StuArray[3];
StuArray[3].next=&StuArray[4];
StuArray[4].next=header;
p=&StuArray[3];//因为是循环链表,随便给一个地址都可以。
printf("姓名\t\t学号\t\t分数\n");
do
{
printf("%s\t\t%s\t\t%.2f\n",p->name,p->StudentNo,p->Score);
p=p->next;
}while(p!=&StuArray[3]);
return 0;
}