- 浏览: 458067 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
双向循环链表
struct node { int id; int data; int status; struct node *up; struct node *next; }; class DoubleLink { public: DoubleLink(); ~DoubleLink(); node* up(); node* next(); node* getCurrent(); int getSize(); node* addNode(int size); void deleteNode(int size); // 删除size个节点 void deleteLink(); // 删除整条 void show(); void showDesc(); private: node* current; void creatLink(); };
DoubleLink::DoubleLink() { creatLink(); } DoubleLink::~DoubleLink() { if (current != NULL) deleteLink(); } void DoubleLink::creatLink() { current = (node *)malloc(sizeof(node)); current->up = current; current->next = current; current->id = 0; current->data = 0; current->status = 0; } void DoubleLink::deleteLink() { current->up->next = NULL; while (current != NULL) { node *p = current->next; free(current); current = p; } current = NULL; } void DoubleLink::deleteNode(int size) { if (getSize() <= size) deleteLink(); node *beg = current->up; for (int i = 0; i < size; i++) { node *p = current->next; free(current); current = p; } current->up = beg; beg->next = current; } node* DoubleLink::addNode(int size) { node *beg = current; node *end = current->next; for (int i = 0; i < size; i++) { node *mid = (node *)malloc(sizeof(node)); beg->next = mid; mid->up = beg; beg = mid; } beg->next = end; end->up = beg; return current; } int DoubleLink::getSize() { int size = 1; node *p = current->next; while (p != current) { p = p->next; size++; } return size; } void DoubleLink::show() { cout << "DoubleLink Show :" << endl; cout << "第0个: " << current->data << endl; node *p = current; p = p->next; for (int i = 1; p != current; i++) { cout << "第"<< i << "个: " << p->data << endl; p = p->next; } } void DoubleLink::showDesc() { cout << "DoubleLink Show Desc :" << endl; cout << "第0个: " << current->data << endl; node *p = current; p = p->up; for (int i = 1; p != current; i++) { cout << "第"<< i << "个: " << p->data << endl; p = p->up; } } node* DoubleLink::up() { return current->up; } node* DoubleLink::getCurrent() { return current; } node* DoubleLink::next() { return current->next; }
发表评论
-
A星寻路+堆排序
2012-03-27 22:24 757http://www.vckbase.com/document ... -
线性运动
2012-02-07 14:03 797线性运动:y=ax+z ==> P=(x0+ax ... -
SQ题
2011-11-17 11:16 6561.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有 ... -
钦天监
2011-10-28 15:42 699http://www.360doc.com/content/0 ... -
排序....
2011-08-25 14:17 704http://zh.wikipedia.org/wiki/%E ... -
给far的单链表代码
2011-03-30 22:31 479纯纪念 #include <stdio.h> # ... -
贪心取最大和
2011-03-28 12:03 780贪婪算法: 1、不追求最优解,故不穷举所有可能性,故效率高; ... -
单链表倒数N个的地址
2011-03-08 08:52 833又给人问倒了~ 单链表的长度L,那么倒数N个的位置:L - ... -
折半查找
2011-03-08 08:51 790最近被人问题,事隔三年了,貌似没什么进步,又写了一遍。 ... -
Hash哈希表
2010-12-16 22:36 694比较方法: 一、直接原数据的比较 二、数据通过某种映射后比较 ... -
Hannoi
2010-11-03 11:38 696每次看问题的层次,偶尔有不同的想法,看来层次提高了 # ... -
KMP字符串匹配
2010-09-26 15:49 558http://lemonmilk.blog.51cto.com ... -
深度优先 - 路径的选择
2010-09-21 10:22 829class PathInfo //数据存储 ...
相关推荐
(整数,正负均可),一开始任选一个正整数作为报数上限值m,从第一个人开 ... ...则逆时针)上的下一个人开始重新从1报数,如此下去,直至所有人全部出列。...用c中的数组和链表方法可以求出出列的顺序。
分别用数组和链表解决约瑟夫环问题。 数组和链表.doc
纯手写 java 数组模拟链表约瑟夫环问题 有很大更改空间 仅供参考
总的来说,使用数组表示循环链表来解决约瑟夫环问题是一种巧妙的方法,它结合了数组的高效访问和链表的循环特性,为编程挑战提供了一个有趣的解决方案。通过理解这个算法,不仅可以提升编程技巧,还能深入理解数据...
在约瑟夫环问题中,我们可以将数组的索引视为人的位置,数组的值表示每个人的状态(例如,是否已被淘汰)。初始化时,数组的每个元素值为1,表示人都在圈内。每次报数后,对应数组元素值为0,表示该人已经出局。当...
约瑟夫环问题的链表和数组两种解法 设有N个人围坐一圈并按顺时针方向从1到N编号,从第S个人开始进行1到M报数,报到第M个人时,此人出圈,再从他的下一个人重新开始1到M的报数,如此进行下去直到所有的人都出圈为止,...
数组实现约瑟夫环 数组实现约瑟夫环 数组实现约瑟夫环 数组实现约瑟夫环 数组实现约瑟夫环
总的来说,约瑟夫环问题的解决方法展示了数组和链表两种数据结构的应用,同时也体现了动态规划和循环结构在解决问题中的重要性。通过理解和实践这两种实现,不仅可以提升编程技能,还能深入理解数据结构和算法在解决...
在现代计算机科学中,约瑟夫环常被用来作为数据结构和算法教学中的经典案例,尤其是用于理解循环链表、数组等数据结构的应用。 ### 一、约瑟夫环的基础概念 约瑟夫环本质上是一种数学问题,涉及到循环队列或循环...
### 约瑟夫环(一位数组 结构体 循环链表) #### 一、约瑟夫环问题概述 约瑟夫环问题是一个经典的计算机科学问题,涉及到数学中的组合和算法设计。该问题通常被描述为:n个人围成一圈,从第一个人开始报数(从1数...
cpp文件内采用两种方式实现经典的约瑟夫出圈问题,分别以数组方式和链表方式实现。同时,也可以实现直接输出最后的获胜者。
这个实验报告展示了如何用数组模拟循环链表解决约瑟夫环问题,同时也体现了问题求解的算法设计和实现能力。通过此实验,可以学习到数组操作、循环控制以及动态更新数据结构的方法。在实际编程中,类似的思路可以应用...
我们可以利用链表这种数据结构来解决约瑟夫环问题。 首先,让我们详细了解一下链表。链表是一种线性数据结构,与数组不同,它不连续存储元素。每个元素(节点)包含两部分:数据域(存储实际信息)和指针域(指向下...
使用一维数组、一维结构体数组、循环链表三种方法完成;
以下是一个简单的C++双向链表约瑟夫环的实现思路: 1. 定义链表节点结构体,包含数据域(序号)、前向指针和后向指针。 2. 创建链表,将所有参与者按顺序插入链表,形成环状。 3. 设置计数器和移除条件,通常是从1...
7. **递归解决方案**:虽然这里提到的是使用单循环链表,但约瑟夫问题也可以用递归方式解决,通过模拟每个节点的生存情况,直到只剩下一个节点。 8. **优化策略**:对于大规模的数据,可以考虑使用更高效的数据结构...
在链表表示的约瑟夫环问题中,每个节点代表一个参与者,节点包含两个部分:一个是参与者的编号,另一个是指向下一个节点的指针。链表的头节点标志着报数的起点。当一个节点被剔除时,它的指针会被更新以指向被剔除...
约瑟夫环问题可以使用数组或链表来解决。 方法一:用数组表示 在使用数组表示的方法中,我们首先创建一个大小为n的数组a,将1到n的整数填充进去。然后,从最后一个元素开始遍历数组,每次淘汰第m个元素(根据模...
约瑟夫问题有多种解决方案 一种是数组方案 一种是链表方案 这种事数组,链表方案与数组方案哪个更优 需要读者去考虑
在链表中,我们不需要像数组那样预先分配固定大小的空间,可以更灵活地添加和删除元素,这在处理约瑟夫环问题时尤其有利,因为我们可以方便地在链表中移除节点,而无需移动大量元素。 循环链表实现约瑟夫环的基本...