谁能用循环队列的数据结构解决约瑟夫环问题?

 我来答
永远的锦依卫喇7O
2011-03-26 · TA获得超过256个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:122万
展开全部
实验一:约瑟夫环实现:
一、 实验目的:加强学生对于线性链表的理解,掌握约瑟夫环这个常用模型的建立方法。
二、 实验设想:以无头结点的循环链表来实现其环状结构。
三、 代码实现:
#include"stdio.h"
#include"stdlib.h"
#define FIRST 1
#define LAMP 2
typedef struct Lnode{
char data;
struct Lnode *next;
} *cylist;
void creat(cylist &L){
char a,b;
cylist p;
cylist s;
L=(cylist)malloc(sizeof(struct Lnode));
L->next=L;
printf("请输入环内人员,以#结束:");
scanf("%c",&a);
L->data=a;
p=L;
scanf("%c",&b);
while(b!='#'){
s=(cylist)malloc(sizeof(struct Lnode));
p->next=s;
s->next=L;
s->data=b;
p=p->next;
scanf("%c",&b);
}
}
void opera(cylist &L,int n,int m){
int i;
cylist p,s;
p=L;
for(i=1;i<n;i++)
p=p->next;
n=1;
while(p->next!=p){
if(m-n==1)
{
s=p->next;
printf("%c ",s->data);
p->next=s->next;
free(s);
n=0;
}
p=p->next;
n++;
}
L=p;
}

void main(){
cylist L;
creat(L);
printf("从第");
printf("%d",FIRST);
printf("个位置开始报数,数到");
printf("%d",LAMP);
printf("出列的序列是:");
opera(L,FIRST,LAMP);
}
四、调试结果:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
范柳原HK
2011-03-26 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:107万
展开全部
我没看错吧??
队列是只能队头出,队尾进的。而约瑟夫是需要经常删除的。用循环队列很不合适。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰火梦幻
2011-03-26 · TA获得超过2308个赞
知道小有建树答主
回答量:1095
采纳率:57%
帮助的人:429万
展开全部
和链表有区别吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式