之所以将这段代码再敲一次,因为这段代码有几点值得学习。
1.对于链表,可以很方便的在表头插入数据,但是如果保留一个尾节点,则可以很方便的尾部插入节点。
2.不用专门定义一个指针来保留欲删除节点的父节点,只需要在数数的时候少数一个即可。如代码中:if( count == stride - 1)
代码示例:
#include <stdio.h> struct Monkey { int ID; Monkey *next; }; int main(int argc, char* argv[]) { Monkey *link, *monkey, *lastMonkey; int totalMonkeys, stride, count; printf("Please input the numbers of Monkeys:\n"); scanf("%d", &totalMonkeys); printf("Please input a number for striding:\n"); scanf("%d", &stride); link = NULL; for( int i = 0; i < totalMonkeys; i++) { monkey = new Monkey; monkey ->ID = i + 1; if( link == NULL) { link = lastMonkey = monkey; } else { lastMonkey->next = monkey; lastMonkey = monkey; } } lastMonkey->next = link; count = 1; printf("猴子出队的顺序:"); while( link != NULL) { if( link->next == link ) { printf("%4d\n", link->ID); delete link; break; } if( count == stride - 1) { monkey = link->next; link->next = monkey->next; printf("%4d", monkey->ID); delete monkey; monkey = NULL; count = 0; } link = link->next; count++; } return 0; }
您还没有登录,请您登录后再发表评论
使用c语言中的循环链表及结构体实现约瑟夫环问题
循环链表 实现约瑟夫环 java 自己写的 测试通过 有注释
约瑟夫环,用循环链表实现,语言为Java。假设数到三的数出列。程序输出1到10的出列顺序。
通过循环链表实现约瑟夫环问题,用c语言实现。属于数据结构部分内容
用循环链表的方式实现约瑟夫环,下面是部分代码, typedef struct node { int key; int seatnum; struct node *next; }node,*linklist; void createlist(linklist&l,int n) { l=(linklist)malloc(sizeof(node));...
约瑟夫环的问题描述 问题描述:编号为1,2… n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,...
双向循环链表解决约瑟夫实验报告, 双向循环链表解决约瑟夫实验报告 双向循环链表解决约瑟夫实验报告双向循环链表解决约瑟夫实验报告
单向循环链表实现约瑟夫环.zip
数据结构问题,编程实现约瑟夫环,原题是严淑敏的《数据结构C语言版题集》实习一的第二题
链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序
这是用C写的链表表示的循环链表的程序。匹配的报告随后上传。
约瑟夫环求解,循环链表的使用,经典问题
是最简单的约瑟夫环代码 结构简单易懂 保证你会满意的呀
用C语言编写的约瑟夫环问题解决程序,利用单向循环链表存储结构模拟此过程
用双向循环链表解决约瑟夫环问题的程序清单
VC++采用单向循环链表实现约瑟夫环,希望和大家共勉。
C++创建链表、及链表数据查询--.cpp源代码
链表创建-输出-删除-示例2.cpp
循环链表实现约瑟夫环问题 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又...
一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部...
相关推荐
使用c语言中的循环链表及结构体实现约瑟夫环问题
循环链表 实现约瑟夫环 java 自己写的 测试通过 有注释
约瑟夫环,用循环链表实现,语言为Java。假设数到三的数出列。程序输出1到10的出列顺序。
通过循环链表实现约瑟夫环问题,用c语言实现。属于数据结构部分内容
用循环链表的方式实现约瑟夫环,下面是部分代码, typedef struct node { int key; int seatnum; struct node *next; }node,*linklist; void createlist(linklist&l,int n) { l=(linklist)malloc(sizeof(node));...
约瑟夫环的问题描述 问题描述:编号为1,2… n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,...
双向循环链表解决约瑟夫实验报告, 双向循环链表解决约瑟夫实验报告 双向循环链表解决约瑟夫实验报告双向循环链表解决约瑟夫实验报告
单向循环链表实现约瑟夫环.zip
数据结构问题,编程实现约瑟夫环,原题是严淑敏的《数据结构C语言版题集》实习一的第二题
链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序
这是用C写的链表表示的循环链表的程序。匹配的报告随后上传。
约瑟夫环求解,循环链表的使用,经典问题
是最简单的约瑟夫环代码 结构简单易懂 保证你会满意的呀
用C语言编写的约瑟夫环问题解决程序,利用单向循环链表存储结构模拟此过程
用双向循环链表解决约瑟夫环问题的程序清单
VC++采用单向循环链表实现约瑟夫环,希望和大家共勉。
C++创建链表、及链表数据查询--.cpp源代码
链表创建-输出-删除-示例2.cpp
循环链表实现约瑟夫环问题 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又...
一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部...