栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C数据结构循环链表实现约瑟夫环

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C数据结构循环链表实现约瑟夫环

C数据结构循环链表实现约瑟夫环

本文代码均在turbo C 2.0 的环境下运行通过,并得到正确结果,本程序为用循环链表实现约瑟夫环,即有m个人站成一个圆环,从某人(队列第一个)开始报数,约定从某数开始的第n个人出列,他的下一个再从一开始报,然再一个报道n的人出列,本程序结果为人员出列顺序,

#include
#include
#define OK  1
#define NULL 0
typedef int status;
typedef int  ElemType;
typedef struct LNode{
 ElemType data;
 struct LNode *next;
 }LNode,*linkList;
linkList L;
status CreateList_L(linkList *L,int m)
{LNode *p,*q;
 int i;
 *L=(linkList)malloc(sizeof(LNode)) ;
 q=*L;
 q->data=1;
 for(i=2;i<=m;i++)
 {p=(linkList)malloc(sizeof(LNode));
  p->data=i;
  p->next=NULL;
  q->next=p;
  q=p;
 }
  q->next=*L;
  return OK;
}
status function(linkList *L,int m,int n)
{LNode *p,*q;
int i,j=1,k=1;
p=*L;
q=p;
do
{p=q->next;j++;
if(j%n==0)
{printf("%3d",p->data);
q->next=p->next;
k++;
free(p);
}
else q=p;
}while(k<=m);
return OK;
}
void main()
{int m,n;
 clrscr();
 gotoxy(5,8);
 printf("***************************************************n");
 gotoxy(5,9);
 printf("**** the list's length is :   ****n");
 gotoxy(35,9);
 scanf("%d",&m);
 gotoxy(5,10);
 printf("****the xunhuan's length is :  ****n");
 gotoxy(35,10);
 scanf("%d",&n);
 gotoxy(5,11);
 printf("***************************************************n");
 CreateList_L(&L, m);
 function(&L,m,n);
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/63690.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号