问题
设有n个人围坐在圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,如此反复直到所有的人全部出列为止。
需求分析
- n个人坐满一张圆桌,为循环表。
- 现在从第s个人开始,数到第m个人出列,然后下一个人从新报数,数到m个人出列,直到重复到所有人为止。为从s开始后循环m-1次,得到结果输出然后删除,直到表为空。
ADT定义
//链表结点类
class Link {
public:
int data;
Link *next;
Link(int info, Link *nextValue) {
data = info;
next = nextValue;
}
};
//单循环链表
class lnkList {
private:
Link *head;
public:
lnkList(int Size) {
int i;
Link *temp, *cre;
head = new Link(1, head);
cre = head;
for (i = 2; i <= Size; i++) {
temp = new Link(i, head);
cre->next = temp;
cre <