线性表13课 作业练习
请高手们指正。#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define M 41
typedef struct s
{
int data;
struct s *next;
}node;
node *chushihua(); //初始化约瑟夫环
void shuchu(node *phead); //输出
void zisha(node *phead); //随机输出自杀人的编号
void main()
{
node *phead;
int i=1;
phead=chushihua();
shuchu(phead);
zisha(phead);
}
node *chushihua() //初始化约瑟夫环
{
node *head,*p,*p1;
int i;
head=p=p1=NULL;
for(i=1; i<=M; i++)
{
p=(node *)malloc(sizeof(node));
if(i==1)
{
head=p;
p->data =i;
}
else
{
p1->next =p;
p->data =i;
}
p1=p;
}
p->next =head;
return head;
}
void shuchu(node *phead) //输出
{
node *p=phead;
do
{
printf("%5d",p->data );
p=p->next ;
}
while(phead!=p );
printf("\n\n");
}
void zisha(node *phead) //随机输出自杀人的编号
{
int i,n,x=0,j;
node *p=phead,*ptemp;
while(p!=p->next)
{
do
{
printf("请输入每数几个人开始自杀:");
scanf("%d",&n);
if(n<=0)
{
printf("你输入的有误请重新输入\n\n");
}
}
while(n<=0);
if(n==1)
{
for(j=1; j<M-x; j++)
{
p=p->next ;
}
}
else
{
for(i=1; i<n-1; i++)
{
p=p->next ;
}
}
printf("%d号自杀去\n\n",p->next->data);
ptemp=p->next;
p->next=ptemp->next;
free(ptemp);
x++; //表示删除链表的个数
p=p->next;
}
printf("%d号自杀去\n\n",p->data);
}
我只是路过打酱油的。 强烈支持楼主ing…… 感恩无私的分享与奉献 :) 感恩无私的分享与奉献 :) 强烈支持楼主ing……
页:
[1]