题意:很清晰的约瑟夫,自己写了半天的循环链表一直WA,案例可以过,可能是没有处理好特殊情况,改了半天也是WA,无奈只有搜解题。。。
因为是昨天弄的,解题报告的地址找不到了,要是在百度搜,应该也可以找到。狠狠鄙视,鄙视自己的链表!我看他这种方法非常好,有种打表的感觉,不忍独享,还是贴出来了。
#include<iostream>
using namespace std;
struct node {
char name[20];
node *next;
};
int main() {
node a[65];
int n , w , s;
scanf("%d",&n);
for (int i = 0 ; i < n ; i ++) {
scanf("%s",a[i].name);
a[i].next = (i==n-1)?&a[0]:&a[i+1];//有种打表的感觉呢
} //把所有的名字都连接形成循环链表
scanf("%d,%d",&w,&s);
node *p;
p = w>=2? &a[w-2]:&a[n-1];//从第一个人找要单独处理下
int j = 0;
while(p&&n>0) {
j ++;
if (j == s) {
printf("%s\n",p->next->name);
j = 0;
p->next = p->next->next;//删除操作
n --;
}
else
p = p->next; //向后查找
}
}