题意:所有n个人围成一个圈,一边从1号开始逆时针数k个,出局;一边从n号开始顺时针数m个,出局。两个同时发生。如果这两个数到同一个人,就这个人出局。
facing inwards 面朝里; counter 相反地,clockwise 顺时针,counter-clockwise 逆时针
思路:双向循环链表来模拟。按以前书上介绍的实现的,有一个头指针,首尾都指向它。但这里由于要找第k个、第m个,需要进行头指针的判断,所以觉得这里不增加头指针比较好,或者头指针只指向头结点,而头结点和尾结点是互指的,不像这里实现的头结点和尾结点之间还有一个头指针结点。
看很多人用数据模拟实现的。。
注意:if里的相等判断,用==
free同一块内存多次发生未定义错误
指向指针的引用形参的问题。
找不出错误时,可以跑一下别人AC的程序,对比相同输入的输出。
一般发现一组不一致的或错误的数据时,可以试图找到一组尽量简单的错误数据,除非只对该组数据错误。数据越简单,越容易调试。如果只有很大的数据才会出错,通常意味着程序在处理极限数据方面有问题。
#include<stdio.h>
#include<malloc.h>
struct Node
{
int data;
Node *next;
Node *prior;
};
Node* CreateList(Node* &head, int n);
Node* searchk(Node *ptr, Node* &head, int k);
Node* rsearchm(Node *ptr, Node* &head, int m);
void deletenode