/*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问题之循环链接表相关推荐

  1. 数据结构源码笔记(C语言):Josephus问题之顺序表

    /*josephus_seq.c*/ /*Josephus问题: 顺序表实现*/#include <stdio.h> #include <stdlib.h>#define FA ...

  2. 数据结构源码笔记(C语言描述)汇总

    数据结构源码笔记(C语言):英文单词按字典序排序的基数排序 数据结构源码笔记(C语言):直接插入排序 数据结构源码笔记(C语言):直接选择排序 数据结构源码笔记(C语言):置换-选择算法 数据结构源码 ...

  3. 数据结构源码笔记(C语言):英文单词按字典序排序的基数排序

    //实现英文单词按字典序排序的基数排序算法#include<stdio.h> #include<malloc.h> #include<string.h>#defin ...

  4. 数据结构源码笔记(C语言):索引文件建立和查找

    //实现索引文件建立和查找算法#include<stdio.h> #include<malloc.h> #include<string.h> #include< ...

  5. 数据结构源码笔记(C语言):快速排序

    //实现快速排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...

  6. 数据结构源码笔记(C语言):冒泡排序

    //冒泡排序算法实现 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...

  7. 数据结构源码笔记(C语言):希尔插入排序

    //实现希尔插入排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; ty ...

  8. 数据结构源码笔记(C语言):直接插入排序

    //实现直接插入排序算法#include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; typ ...

  9. 数据结构源码笔记(C语言):直接选择排序

    //实现直接选择排序算法#include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; typ ...

最新文章

  1. Kafka:你必须要知道集群内部工作原理的一些事!
  2. 数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)
  3. 慕尼黑工业大学最新综述:深度神经网络中的不确定性
  4. android 成长日记 8.Fragment学习之方法回调
  5. @Autowired和构造方法执行的顺序解析
  6. python多线程爬取多个网页_python多线程爬取网页
  7. atom芯片和服务器芯片冲突,大小核混合X86可否在笔记本市场与Arm一战?英特尔Atom再昂首先前...
  8. deebot地面清洁机器人怎么关_买扫地机器人还是吸尘器?看完你就明白了
  9. 斯坦福大学的机器学习课程,浓缩成6张速查表
  10. java出租车计费系统_基于JavaEE的出租车计费系统的设计实验报告
  11. r语言 svycoxph_R语言之生信⑦Cox比例风险模型(单因素)
  12. 第06篇 部署区块链浏览器(1)
  13. 使用IP代理池伪装你的IP(python)
  14. 浅谈Android中MVP模式用于实际项目中的问题与优化
  15. 最详细JMX远程连接服务器Zookeeper失败问题踩坑和总结
  16. 上海11月月赛乙组解题报告
  17. 万马齐喑究可哀-中文编程的又一波quot;讨论quot;
  18. 汽车整体解剖VR教学软件QY-JP001
  19. 【算法学习笔记】寒假打卡1——数组
  20. SecureCrt 的配色方案

热门文章

  1. html运行c代码大全,html特效代码大全
  2. aapt.exe已停止工作 r.java_【转】android错误 aapt.exe已停止工作的解决方法
  3. 下qemu模拟arm9_QEMU搭建树莓派环境
  4. Linux下启动和关闭Oracle数据库的方法
  5. TensorFlow迁移学习的识别花试验
  6. 手把手视频:万能开源Hawk抓取动态网站
  7. iOS toolchain based on clang for linux
  8. 哲理故事与管理之道(3)-不要吝惜赞美
  9. asp.net关于kindeditor 上传图片出现服务器故障的解决办法
  10. msm8953+android8.1蓝牙名称修改、多产品采用不同名字的兼容