编号为1,2,3,4…,n的n个人按顺时针方向围坐一圈,每人
持有一个密码(正整数).一开始任选一个正整数作为报数的上
限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m
时停止.报m的人出列,将他的密码作为新的m值,从他在顺时针
方向上的下一人开始重新从1报数,如此下去,直到所有人全部
出列为止.编程打印出列顺序.
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int number;
struct LNode *next;
}LNode,*LinkList;
//建立线性表
int InitLinkList(LinkList &L){
L=new LNode;
if(L==NULL) return 0;
L->next=NULL;
return 1;
}
//对线性表进行初始化
int InputLinkList(LinkList &L,int m){
int i=1;
LNode *p,*tail=L;
while(i<=m){
p=new LNode;
p->number=i;
p->next=tail->next;
tail->next=p;
tail=p;
i++;
}
p->next=L->next;
return 1;
}
//删除指定节点后的节点
int DeleteAfterLNode(LinkList &L,LNode *p){
printf("%d\n",p->next->number);
LNode *q=p->next;
p->next=q->next;
q->next=NULL;
free(q);
return 1;
}
请帮忙吧这个程序完善一下,感激不尽!