在本章中,你将学习:
执行双链接列表
执行循环链接列表
应用链接列表以解决编程问题
现在,考虑一个示例,您需要以降序的方式显示这些数字。
如何解决此问题?
每一个节点链接到序列中的下一个节点,这意味着您只能以正向遍历列表,这样的链接列表称为单链接列表。要以降序的方式显示数字,您需要反转此链接列表。
运用算法以反转单链接列表。
1.声明三个变量...
分类:
编程语言 时间:
2016-06-12 02:04:57
阅读次数:
271
之前已经学会了单链表的建立删除插入转置以及一些普通操作,双链表和单链表差不多,就是多了一个前驱指针,在许多操作中很方便,但是加了一个指针开销应该会大一些,总体上影响不大,这里开始讨论循环链表以及其他的一些数据结构。 1、已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌周围,从编号为k ...
分类:
编程语言 时间:
2016-06-07 16:09:54
阅读次数:
278
传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围。犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案。他们围成一个圈,从一个人开始,数到第三个人时将第三个人杀死,然后再数,直到杀光所有人。约瑟夫和另外一个人决定不参加这个疯狂的游戏,他们快速地计算出 ...
分类:
其他好文 时间:
2016-06-03 14:33:13
阅读次数:
270
约瑟夫环问题 已知 n 个人(n>=1)围坐一圆桌周围,从 1 开始顺序编号,从序号为 1 的人开始报数,顺时针数到 m 的那个人出列。下一个人又从 1 开始报数,数到m 的那个人又出列。依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的初始编号。 要求 输入人数 n,所报数 m,输出最后 ...
分类:
编程语言 时间:
2016-05-26 20:30:22
阅读次数:
777
一、典故:据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是商量了一个自杀方式:41个人排成一个圆圈,由第1个人开始报数,每数到第3人该人就必须自杀,然后再由..
分类:
其他好文 时间:
2016-05-20 06:22:24
阅读次数:
140
1.查找rear指针为O(1) 那么开始节点就为rear->next->next,也是O(1) //大家可以想象从最后一个结点开始有什么好处2.head->next ==head 判断是否空表 图片是自己整理思路写出来的,比较丑,以后写好点 返回节点比较简单,大家看看就会 感觉不太难,大家琢磨琢磨就 ...
分类:
其他好文 时间:
2016-05-19 00:03:50
阅读次数:
275
这个问题其实还蛮有名的,它被称为约瑟夫的问题。 最直观的解法是用循环链表模拟报数、淘汰的过程,复杂度是O(NM)。 今天我们来学习两种更高效的算法,一种是递推,另一种也是递推。第一种递推的公式为: 接下来我们用数学归纳法来证明这个递推公式的正确性: (1) f[1] = 0 显然当只有1个候选人时, ...
分类:
其他好文 时间:
2016-05-18 16:10:32
阅读次数:
193
约瑟夫问题的提法:n个人围成一个圆圈,首先第1个人从1开始,一个人一个人的顺时针报数,报到第m个人,令其出列;然后再从下一个人开始,从1顺时针报数,报到第m个人,再令其出列,…,如此下去,直到圆圈中只剩一个人为止,此人即为优胜者。 例如 n = 8 m = 3 该问题老师让我们在带头节点的单循环链表 ...
分类:
其他好文 时间:
2016-05-18 10:21:21
阅读次数:
231
//CList.h
//结构体定义以及函数声明
#ifndef CLIST_H
#define CLIST_H#include
#include
#include
#include typedef int ElemType;typedef struct Node
{
ElemType data;...
分类:
编程语言 时间:
2016-05-13 15:15:08
阅读次数:
254
//双向链表,将头结点和尾结点链接起来,就构成了双向循环链表
//双向循环链表是将头结点的前驱指针指向了尾结点,同时将尾结点的后劲指针指向了头结点.
//空表,头结点的前驱和后继指针均指向了自己,这也是判断双向循环链表是否为空的条件,
//双向循环链表具有对称性
//缺点,是要付出空间代价的双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从...
分类:
其他好文 时间:
2016-05-12 18:27:21
阅读次数:
276