约瑟夫环问题 循环链表
来源:互联网 发布:字体管家mac版 编辑:程序博客网 时间:2024/05/01 10:46
#include <stdio.h>#include <stdlib.h>typedef struct node *link;struct node{int item ;link next;}; void josephus(int n, int m){int i ;link head = (link) malloc(sizeof (link) ), x = head ; head -> item = 1;head -> next = head ;for(i = 2 ; i <= n; i++){x = (x -> next = (link)malloc(sizeof(link))); x->item = i; x->next = head ; } while(x != x -> next ){ printf("%d\n",x -> item ); for(i = 1 ; i < m ; i++ ) x = x -> next; x -> next = x -> next -> next;n--;}printf("%d",x -> item );}main(){josephus(9,5);}
程序2:
list.h文件
typedef struct node* link;struct node {int item; link next;};typedef link Node;void initNodes(int);link newNode(int);void freeNode(link);void insertNext(link,link);link deleteNext(link);link Next(link);int Item(link);
主程序
<pre name="code" class="objc">#include <stdlib.h>#include <stdio.h>#include "list.h"link freelist;void initNodes(int n ){int i ;freelist =(link) malloc((n+1) * (sizeof *freelist));for (i = 0 ; i < n+1 ; i ++ ) freelist[i].next = &freelist[i+1] ;freelist[n].next = NULL;} link newNode(int i){link x = deleteNext(freelist) ;x -> item = i ;x -> next = x ;return x ;}void freeNode(link x){insertNext(freelist, x);}/********************* *在x节点后插入t节点。 *********************/void insertNext(link x,link t){t -> next = x -> next ;x -> next = t ;}//删除x节点后的一个节点 并返回删除掉的节点 link deleteNext(link x){link t = x -> next;x -> next = t -> next;return t;}link Next(link x){return x -> next;}int Item(link x){return x -> item ;}void josephus(int n, int m){int i ;Node head , x ; initNodes(n);for(i = 2, x = newNode(1); i <= n; i++){head = newNode(i);insertNext(x,head);x = head ; } while(x != Next(x) ){ printf("%d\n",x -> item ); for(i = 1 ; i < m ; i++ ) x = x -> next; freeNode(deleteNext(x)) ;}printf("%d",Item(x) );}main(){josephus(9,5);}
程序运行结果
0 0
- 约瑟夫环问题(循环链表)
- 循环链表 约瑟夫环问题实现
- 约瑟夫环问题(循环链表)
- 约瑟夫环问题循环链表实现
- 约瑟夫环问题 循环链表
- 循环链表-约瑟夫环问题
- 循环链表实例-约瑟夫环问题
- 约瑟夫环问题(循环链表)
- 循环链表--解决约瑟夫环问题
- 约瑟夫环问题(循环链表)
- 约瑟夫环问题(循环链表)
- 循环链表之约瑟夫环问题
- 循环链表—约瑟夫环问题
- 循环链表--约瑟夫环问题
- 循环链表--约瑟夫环问题
- 约瑟夫环问题--循环链表
- 约瑟夫问题-循环链表
- 循环链表:约瑟夫问题
- 考试
- C#里怎样把一个DataTable的数据追加进数据库里的某个表
- js中的简单排序
- 【算法笔记】Aho-Corasick 算法(AC自动机) 小结
- Android 编程下的 EditView 阻止软键盘自动弹出__图片资源文件后缀不能为.ico
- 约瑟夫环问题 循环链表
- MapReduce的处理流程(一)
- 用过滤器解决全站中文数据提交乱码问题
- Binary Tree Inorder Traversal
- [ACM] HDU 1242 Rescue (优先队列)
- poj 3274 Gold Balanced Lineup
- JavaScript 知识点总结-3
- Android中JNI的使用方法
- 类和对象