WEB开发网
开发学院软件开发C++ 约瑟夫环C语言 阅读

约瑟夫环C语言

 2008-03-08 12:51:31 来源:WEB开发网   
核心提示:这是小弟的实验报告/*约瑟夫环*/#include <stdlib.h>#include <stdio.h>typedef strUCt node{ int data; struct node *next;}LNode;main(){ LNode* Create(int,int); LNode*
这是小弟的实验报告 /*约瑟夫环*/ #include <stdlib.h>
#include <stdio.h>
typedef strUCt node
{
 int data;
 struct node *next;
}LNode; main()
{
 LNode* Create(int,int);
 LNode* GetNode(LNode *);
 int PRint(LNode *,int);
 LNode *p;
 int n,k,m;
 do
 {
 printf ("输入总人数");
 scanf ("%d",&n);
 }
 while (n<=0);
 do
 {
 printf ("输入开始人的序号(1~%d)",n);
 scanf ("%d",&k);
 }
 while (k<=0 k>n);
 do
 {
 printf ("输入间隔数字");
 scanf ("%d",&m);
 }
 while(m<=0);  p=Create(n,k);
 Print(p,m);
 return 0;
}; LNode* Create(int n,int k)/*创建循环链表*/
{
 int start=k-1;
 LNode *s,*p,*L=0,*t;
 if (start==0) start=n;
 while (n!=0)
 {
 s=(LNode *)malloc(sizeof(LNode));
 if (L==0) p=s;
 if (n==start) t=s;
 s->data=n;
 s->next=L;
 L=s;
 n--;
 }
 p->next=L;
 return t;
} LNode* GetNode(LNode *p)/*出队函数*/
{
 LNode *q;
 for (q=p;q->next!=p;q=q->next);
 q->next=p->next;
 free (p);
 return (q);
} Print(LNode *p,int m)/*输出函数*/
{
 int i;
 printf ("出队编号:\n");
 while (p->next!=p)
 {
 for (i=1;i<=m;i++)
  p=p->next;
 printf ("%d ",p->data);
 p=GetNode(p);
 }
 printf("%d\n",p->data);
 return 0;
}

Tags:约瑟夫

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接