问题描述:
编写程序:13个人围成一圈,从第一个人开始顺序报号1、2、3,凡报到3者退出圈子,找出最后留在圈子中的人原来的序号,要求用链表实现。
说明
首先先声明一个结构体类型表示各个学生,然后用链表将每个结构体连接,重点是最后一节点中要存储第一个节点的地址,之后用循环进行报数和出列。
代码
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define N 13
struct quan
{
int num;
struct quan * next;
};
struct quan *creat()//创建链表
{
int i=1;
struct quan *head;
struct quan *p1,*p2;
p1=p2=(struct quan *)malloc(sizeof(struct quan));
p1->num=i++;
head=NULL;
while(p1->num<=N)
{
if(p1->num==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct quan *)malloc(sizeof(struct quan));
p1->num=i++;
}
p2->next=head;
return head;
};
int get_len(struct quan *head)//链表长度
{
struct quan *