约瑟夫环——链表法
#include <iostream> #include <stdlib.h> using namespace std; typedef struct node* list; struct node { int Item; list next; }; static void DisplayList(list head) { if (head->next == nullptr) { cout << "null\n"; return; } list p = head; do { cout << p->Item << endl; p = p->next; } while (p != head); } int main(int argc, char *argv[]) { int N = atoi(argv[1]); int M = atoi(argv[2]); list head = (list)malloc(sizeof(struct node)); list p = head; head->Item = 1; head->next = head; for (int i=2; i<=N; i++) { list m = (list)malloc(sizeof(struct node)); p->next = m; m->Item = i; m->next = head; p = m; } DisplayList(head); while(p != p->next) { for (int i=1; i<M; i++) { p = p->next; } cout << p->next->Item << endl; p->next = p->next->next; } cout << p->Item << endl; }
版权声明:
作者:朝雾之归乡
出处:http://www.cnblogs.com/cnpirate
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。