struct
list//建立一个结构体,包括每个人的编号,密码和下一级的指针
{
int
id
int
code
struct
list
*next
}
typedef
struct
list
list//把结构体用list表示
list*
input(int
n)//链表的初始化
{
list
*p,*q,*l
int
i,m
p=new
list
l=new
list
l->next=NULL
p=l
p->id=1//第一个人的初始化
scanf("%d",&m)
p->code=m
for(i=2i<=ni++)//第二个人到第num个人的初始化
{
q=new
list
q->id=i
scanf("%d",&m)
q->code=m
q->next=NULL
p->next=q
p=q
}
p->next=l//使表尾指向表头,成循环链表
return
p
}
int
main()
{
int
num,m1,i
list
*q,*p
while(scanf("%d",&num)!=EOF)
{
printf("第一次的密码为:")
scanf("%d",&m1)
p=input(num)
//printf("%4d\n",head->id)
printf("出队的顺序为:")
while(p->next!=p)
{
for(i=1i<=m1i++)
{
q=p
p=p->next
//printf("--\n",p->id)
}
m1=p->code
printf("%4d",p->id)
q->next=p->next
delete
p
p=q
}
printf("%4d",p->id)
delete
p
printf("\n")
}
}
已经修改好了。上次调试程序调试的不仔细,这次应该没问题了,如果有的话再跟我联系。
#include <stdio.h>
#define S() sizeof(struct quene)
typedef struct quene
{ int n
struct quene *next
} QUE
QUE * fun1(int n)
int fun2(QUE *p)
int main()
{ int m,i,n,j,s
QUE *p,*p2
printf("n=")
scanf("%d",&n)
printf("m=")
scanf("%d",&m)
printf("i=")
scanf("%d",&i)
p=fun1(n)
for(j=1j<ip=p->next,j++)
j=1p2=p
while((p->next)!=p)
{ p=p->next
if(++j==m)
{ j=1p=p->next
s=fun2(p2)
printf("%d ",s)
}
p2=p
}
printf("%d\n",p->n)
}
QUE * fun1(int n)
{ QUE *head,*p1,*p2
int i
for(i=1i<=ni++)
{ p1=(QUE *)malloc(S())
if(i==1) head=p1
else p2->next=p1
p1->n=i
p2=p1
}
p1->next=head
return head
}
int fun2(QUE *p)
{ QUE *p2
int n
p2=p->next
n=p2->n
p->next=p2->next
free(p2)
return n
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)