题目是这样的:给你一个单链表的表头,再给你其中某个结点的指针,要你删除这个结点,条件是你的程序必须在O(1)的时间内完成删除。由于有的同学对链表还不是很熟悉,本文尽量描述的通俗易懂,老鸟请直接跳过前面一大段。链表结构如下:[cpp] view plaincopyprint?structnode{in...
分类:
其他好文 时间:
2014-08-02 07:29:44
阅读次数:
161
题目是这样的:给你一个单链表的表头,再给你其中某个结点的指针,要你删除这个结点,条件是你的程序必须在O(1)的时间内完成删除。
由于有的同学对链表还不是很熟悉,本文尽量描述的通俗易懂,老鸟请直接跳过前面一大段。
链表结构如下:
struct node
{
int val;
node* next;
};
题目不是很难,很快就能想到好办法:)
首先回顾一下普通的删除方法,...
分类:
其他好文 时间:
2014-08-02 05:14:14
阅读次数:
231
问:二叉树是否存在路径和等于sum的路径,若存在输出true,否则输出false分析:递归调用二叉树,每次将上一层的val值传递给子结点并加上子节点的val,当传递到某个结点为叶子结点时,判断其val值是否等于sum错点:二叉树为空,则无论sum为多少都为false,这个容易造成RE 二叉树只...
分类:
其他好文 时间:
2014-08-01 09:08:31
阅读次数:
214
引言:
单链表存在一个问题,当我们想要访问某个结点的前一个结点时,要从头结点开始访问。显然这样的操作是令人烦躁的。为此,双向链表出现,它比单链表多出了一个指针域,指向前一个结点。这样,对于双向链表,就可以方便的从后向前遍历链表了。但多出的问题是对于插入和删除结点的开销要增加一倍。
分析描述:
双向链表存储结构图为:,用结构体表示如下:
...
分类:
其他好文 时间:
2014-07-09 11:44:17
阅读次数:
189
通常我们所说的删除链表的某个结点,是彻底删除该结点的空间,而要这么做就必须知道其前驱结点。这里的想法是,链表中存储的val是同类型的,只要将该结点的val内容删除就可以了。那么就可以用该结点的后继结点的值覆盖当前结点,然后删除其后继结点,而对于其后继结点而言,该结点就是前驱。
这里只需要考虑当前删除的结点是否为last node 就可以了,至于是否是头结点,这种情况是可以归为同一种情况的,只是参...
分类:
其他好文 时间:
2014-07-08 13:58:04
阅读次数:
197
都不知道怎么分类了。
大概要求一个树中以某个结点为根的子树结点个数,还有儿子结点中以儿子结点为根的子树结点个数的最大值,用递归得到n[i],以i为根节点的子树结点个数
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define scan(a) scanf("...
分类:
其他好文 时间:
2014-05-18 07:26:01
阅读次数:
225