链表中结点的分配和回收是由系统提供的标准函数malloc和free动态实现的,称之为动态链表。
如果程序支持指针,则可按照我们的一般形式实现链表, 需要时分配,不需要时回收即可.
动态链表的空间是可以动态扩展的。
typedef struct node{
EleType data;
struct node * pNext;
}Node;
有些高级语言中没有“指...
分类:
其他好文 时间:
2014-05-10 10:38:07
阅读次数:
297
要求:输入一棵二叉排序树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建新的结点,只能调整树中结点的指针的指向。方法一:我们借助一个容器来顺序存储结点的指针,然后改变指针的指向。方法二:我们边遍历边改变指针的指向。
分类:
其他好文 时间:
2014-05-08 08:59:21
阅读次数:
349
Problem Description
有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?
Input
第一行包含一个整数 n 。
接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。
接下来一共 n-1 行,每行描述树上的一条边。
Out...
分类:
其他好文 时间:
2014-05-08 04:55:03
阅读次数:
282
昨晚Debug了好久始终找不出哪里错了,今早再一看发现自己已荣升逗比Beta 2.0 Version.
个人感觉此题为HDU 4003 的弱化版。
把每棵子树都看成一类商品,在每类商品中至多选一件。则问题转化为最基本的分组背包问题。
dp[s][c][k] c == 1时,表示在s结点不返回时走K的最大收益,c == 0时,表示在s结点重新返回时走k步的最大收益。
可以dfs从底到顶更新d...
分类:
移动开发 时间:
2014-05-07 04:52:22
阅读次数:
500
删除
RB-TRANSPLANT(T,u,v)函数是将u子树用v来代替,在替换的时候分为了三种情况,如果u就是root结点则直接替换u,如果树里面还包含有其它结点,则将u的左右子树转移到v的左右子树上面。
RB-TRANSPLANT(T,u,v)
if u.p == T.nil
T.root = v
else if u == u.p.left
u.p.left = v
e...
分类:
其他好文 时间:
2014-05-07 04:34:13
阅读次数:
474
线性表的Java实现--顺序存储
线性表(Linear List)是由n(n≥0)个数据元素(结点)a[0],a[1],a[2]…,a[n-1]组成的有限序列。
其中:
数据元素的个数n定义为表的长度 = "list".length() ("list".length() = 0(表里没有一个元素)时称为空表)
将非空的线性表(n>=0)记作:(a[0],a[1],a[2],…,a...
分类:
编程语言 时间:
2014-05-07 02:35:56
阅读次数:
438
实现一个函数复制一个复杂链表。在复杂链表中,每个结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任意结点或者NULL。
分类:
其他好文 时间:
2014-05-06 23:48:50
阅读次数:
461
【问题描述】
约瑟夫环问题(Josephus)
用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。(约瑟夫环问题 Josephus)
【解题思路】
构建一个循环链表,每个结点的编号为1,2,......,n。每次从当前位置向前移动m-1步,然后删除这个结点。
【C程序代码】
#include
#include
type...
分类:
其他好文 时间:
2014-05-06 19:37:20
阅读次数:
270
下图是一个创建好的链表
下面我们需要删除一个结点,例如删除第3个结点
首先定义一个指针p,并且将p指向第二个结点
然后定义一个指针q,将q指向需要删除的结点
将p指向的结点和q指向的结点相连
p->pNext = q->pNext
清空q指向的结点
free(q);
q = NULL;
删除后的链表
程序代码:
...
分类:
其他好文 时间:
2014-05-06 15:32:46
阅读次数:
325