数据结构源码笔记(C语言):Josephus问题之循环链接表
/*josephus_clist.c*/
/*Josephus问题:循环链接表实现*/#include <stdio.h>
#include <stdlib.h>#define FALSE 0
#define TRUE 1
typedef int DataType; /* 定义元素类型为整型,也可定义为其他类型 */
struct Node; /* 单链表结点类型 */
typedef struct Node *PNode; /* 结点指针类型 */
struct Node /* 单链表结点结构 */
{ DataType info;PNode link;
};typedef struct Node *LinkList;
typedef LinkList *PLinkList;int init_clist( PLinkList pclist, int n )
/* 用1,2,……,n为*pclist所示的循环表初始化 */
{ PNode p,q;int i;q = (PNode)malloc( sizeof( struct Node ) );if ( q == NULL ) return ( FALSE );*pclist=q;q->info = 1;q->link = q;if (n==1) return (TRUE);for(i=2;i<n+1;i++){ p=(PNode)malloc(sizeof(struct Node));if (p==NULL) return(FALSE);p->info=i;p->link=q->link;q->link=p;q=p;}
return (TRUE);
}void josephus_clist( PLinkList pclist, int s,int m )
{PNode p,pre;
int i;
p=*pclist;/* 找第s个元素 */
if (s==1)
{pre =p;p=p->link;while (p!=*pclist){pre =p;p=p->link;}
}
else for(i=1;i<s;i++)
{pre =p;p=p->link;
}
while (p!=p->link) /* 当链表中结点个数大于1时 */
{ for (i=1;i<m;i++) /* 找第m个结点 */{ pre = p;p = p->link;}printf(" out element: %d \n",p->info); /* 输出该结点 */if (*pclist ==p) /* 该结点是第一个结点时,删除时需特殊处理一下 */*pclist =p->link;pre->link = p->link; /* 删除该结点 */free(p);p = pre->link;
}
printf(" out element: %d \n",p->info); /* 输出最后一个结点 */
*pclist=NULL;
free(p);
}int main( )
{LinkList jos_clist;
int n,s,m;
/* 输入所需各参数的值 */
do{printf("\n please input the values of n = ");scanf("%d",&n);}while (n<1);
do{printf(" please input the values of s = ");scanf("%d",&s);}while (s<1);
do{printf(" please input the values of m = ");scanf("%d",&m);}while (m<1);
if (init_clist(&jos_clist,n))
josephus_clist(&jos_clist,s,m);
else
printf("Out of space!\n");
return 0;
}
数据结构源码笔记(C语言描述)汇总:
数据结构源码笔记(C语言):英文单词按字典序排序的基数排序
数据结构源码笔记(C语言):直接插入排序
数据结构源码笔记(C语言):直接选择排序
数据结构源码笔记(C语言):置换-选择算法
数据结构源码笔记(C语言):Huffman树字符编码
数据结构源码笔记(C语言):Josephus问题之顺序表
数据结构源码笔记(C语言):Josephus问题之循环链接表
数据结构源码笔记(C语言):多项式合并
数据结构源码笔记(C语言):二叉树之叶子结点旋转销毁
数据结构源码笔记(C语言):哈夫曼树
数据结构源码笔记(C语言):集合的位向量表示
数据结构源码笔记(C语言):链接队列
数据结构源码笔记(C语言):链接栈
数据结构源码笔记(C语言):线性表的单链表示
数据结构源码笔记(C语言):线性表的顺序表示
数据结构源码笔记(C语言):栈的基本操作
数据结构源码笔记(C语言):中缀表达式
数据结构源码笔记(C语言):希尔插入排序
数据结构源码笔记(C语言):索引文件建立和查找
数据结构源码笔记(C语言):冒泡排序
数据结构源码笔记(C语言):快速排序
数据结构源码笔记(C语言):可变长度字符串的快速排序
数据结构源码笔记(C语言):基数排序
数据结构源码笔记(C语言):二路归并排序
数据结构源码笔记(C语言):堆排序
数据结构源码笔记(C语言):二叉树搜索树Kruskal
数据结构源码笔记(C语言):二叉搜索树Prim
数据结构源码笔记(C语言):最短路径弗洛伊德算法
数据结构源码笔记(C语言):深度、广度优先生成树
数据结构源码笔记(C语言):邻接矩阵转化邻接表
数据结构源码笔记(C语言):统计字符串中出现的字符及其次数
数据结构源码笔记(C语言):顺序查找
数据结构源码笔记(C语言):哈希表的相关运算算法
数据结构源码笔记(C语言):分块法查找
数据结构源码笔记(C语言):二分查找
数据结构源码笔记(C语言):二叉树遍历
数据结构源码笔记(C语言):二叉平衡树的相关操作算法
数据结构源码笔记(C语言):二叉排序树的基本操作算法
数据结构源码笔记(C语言):B树的相关运算算法
数据结构源码笔记(C语言):Josephus问题之循环链接表相关推荐
- 数据结构源码笔记(C语言):Josephus问题之顺序表
/*josephus_seq.c*/ /*Josephus问题: 顺序表实现*/#include <stdio.h> #include <stdlib.h>#define FA ...
- 数据结构源码笔记(C语言描述)汇总
数据结构源码笔记(C语言):英文单词按字典序排序的基数排序 数据结构源码笔记(C语言):直接插入排序 数据结构源码笔记(C语言):直接选择排序 数据结构源码笔记(C语言):置换-选择算法 数据结构源码 ...
- 数据结构源码笔记(C语言):英文单词按字典序排序的基数排序
//实现英文单词按字典序排序的基数排序算法#include<stdio.h> #include<malloc.h> #include<string.h>#defin ...
- 数据结构源码笔记(C语言):索引文件建立和查找
//实现索引文件建立和查找算法#include<stdio.h> #include<malloc.h> #include<string.h> #include< ...
- 数据结构源码笔记(C语言):快速排序
//实现快速排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...
- 数据结构源码笔记(C语言):冒泡排序
//冒泡排序算法实现 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...
- 数据结构源码笔记(C语言):希尔插入排序
//实现希尔插入排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; ty ...
- 数据结构源码笔记(C语言):直接插入排序
//实现直接插入排序算法#include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; typ ...
- 数据结构源码笔记(C语言):直接选择排序
//实现直接选择排序算法#include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; typ ...
最新文章
- Kafka:你必须要知道集群内部工作原理的一些事!
- 数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)
- 慕尼黑工业大学最新综述:深度神经网络中的不确定性
- android 成长日记 8.Fragment学习之方法回调
- @Autowired和构造方法执行的顺序解析
- python多线程爬取多个网页_python多线程爬取网页
- atom芯片和服务器芯片冲突,大小核混合X86可否在笔记本市场与Arm一战?英特尔Atom再昂首先前...
- deebot地面清洁机器人怎么关_买扫地机器人还是吸尘器?看完你就明白了
- 斯坦福大学的机器学习课程,浓缩成6张速查表
- java出租车计费系统_基于JavaEE的出租车计费系统的设计实验报告
- r语言 svycoxph_R语言之生信⑦Cox比例风险模型(单因素)
- 第06篇 部署区块链浏览器(1)
- 使用IP代理池伪装你的IP(python)
- 浅谈Android中MVP模式用于实际项目中的问题与优化
- 最详细JMX远程连接服务器Zookeeper失败问题踩坑和总结
- 上海11月月赛乙组解题报告
- 万马齐喑究可哀-中文编程的又一波quot;讨论quot;
- 汽车整体解剖VR教学软件QY-JP001
- 【算法学习笔记】寒假打卡1——数组
- SecureCrt 的配色方案
热门文章
- html运行c代码大全,html特效代码大全
- aapt.exe已停止工作 r.java_【转】android错误 aapt.exe已停止工作的解决方法
- 下qemu模拟arm9_QEMU搭建树莓派环境
- Linux下启动和关闭Oracle数据库的方法
- TensorFlow迁移学习的识别花试验
- 手把手视频:万能开源Hawk抓取动态网站
- iOS toolchain based on clang for linux
- 哲理故事与管理之道(3)-不要吝惜赞美
- asp.net关于kindeditor 上传图片出现服务器故障的解决办法
- msm8953+android8.1蓝牙名称修改、多产品采用不同名字的兼容