用循环单链表实现约瑟夫环(c语言)
来源:互联网 发布:网络大电影前景分析 编辑:程序博客网 时间:2024/06/13 06:35
源代码如下,采用Dev编译通过,成功运行,默认数到三出局。
主函数:
main.c文件
#include <stdio.h>#include "head.h"#include "1.h"int main() { Linklist L; int n; printf("请输入约瑟夫环中的人数:"); scanf("%d",&n); Createlist(L,n); printf("创建的约瑟夫环为:\n"); Listtrave(L,n); printf("依次出局的结果为:\n"); Solution(L,n); return 0;}
head.h文件:
#include "1.h"#include <stdio.h>#include <stdlib.h>typedef int Elemtype;typedef struct LNode{ Elemtype data; struct LNode *next;}LNode,*Linklist;void Createlist(Linklist &L,int n){ Linklist p,tail; L = (Linklist)malloc(sizeof(LNode)); L->next = L;//先使其循环 p = L; p->data = 1;//创建首节点之后就先给首节点赋值,使得后面节点赋值的操作能够循环 tail = L; for(int i = 2;i <= n;i++) { p = (Linklist)malloc(sizeof(LNode)); p->data = i; p->next = L; tail->next = p; tail = p; } printf("已生成一个长度为%d的约瑟夫环!\n",n); }void Listtrave(Linklist L,int n)//遍历函数 { Linklist p; p = L; for(int i = 1;i <= n;i++) { printf("%3d",p->data); p = p->next; } printf("\n");}int Solution(Linklist L,int n){ Linklist p,s; p = L,s = L; int count = 1; while(L) { if(count != 3) { count++;p = p->next;//进行不等于3时的移位 } else { Linklist q; q = p;//用q保存p所指的位置,方便进行节点的删除 if(s->next->data == s->data)//当只有一个元素的时候 { printf("%3d\n",s->data); free(s); return OK; } else//当有两个及两个以上的元素的时候 { count = 1;//先将count重置为1 printf("%3d",p->data);//再打印出出局的值 while(s->next != p) { s = s->next;//将s移位到p的前驱节点处 } p = p->next;//使p指向自己的下一个节点 s->next = p;//进行删除 free(q); } } }}
1.h文件:
#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2
运行结果:
阅读全文
0 0
- 用循环单链表实现约瑟夫环(c语言)
- 约瑟夫循环c语言实现 (<<数据结构与算法>>-王曙燕 约瑟夫环问题解答)
- C语言实现约瑟夫环,使用循环单链表和循环数组2种方法
- C语言单链表实现约瑟夫环
- C语言实现单链表之约瑟夫环
- 约瑟夫环(约瑟夫问题) 采用循环单链表实现
- 单链表实现约瑟夫环(JosephCircle)(C语言)
- C语言-实现约瑟夫环
- C语言实现约瑟夫环
- 循环链表实现约瑟夫环(C实现)~
- 循环单链表实现约瑟夫环
- Josephus(约瑟夫环问题)循环单链表c语句实现!
- 【C++】用循环链表实现约瑟夫环
- 【C语言】约瑟夫环(用单向循环链表解决)
- 约瑟夫C语言实现
- C语言循环链表求解约瑟夫环问题(循环方式)
- C语言指针实现循环报数问题(简单约瑟夫环问题)
- 用c语言一位数组实现约瑟夫环
- Html学习---5
- Mysql 访问控制1 Connection Verification
- shell 中数学计算总结
- 【Leetcode-Easy-141】Linked List Cycle
- 2017.10.19 Irish_Moonshine总结
- 用循环单链表实现约瑟夫环(c语言)
- 操作系统基础
- 浅谈C/C++排序函数中cmp()比较函数的写法(qsort sort函数)
- 记录关于搭建mysql主从复制中遇见的问题
- Intellij idea的tomcat配置
- 安卓入门用eclipse搭建环境报错
- JavaScript常用工具函数
- Axure RP 8 学习笔记
- dom4j解析