复习 算法/数据结构
文章平均质量分 71
King__Moving
这个作者很懒,什么都没留下…
展开
-
二元查找树-- 转化为双向链表
/*把二叉查找树转化为双向链表 什么是二元查找树? 二元查找树: 它首先要是一棵二元树,在这基础上它或者是一棵空树;或者是具有下列性质的二元树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二元查找树*/#include u原创 2011-12-18 13:23:25 · 650 阅读 · 0 评论 -
二叉排序树转化为排序的双向链表
#include #include #include using namespace std;/******************** 题目1 *************************二元查找树转化为排序的双向列表输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 */struct BSTreeNod原创 2015-08-18 21:29:30 · 623 阅读 · 0 评论 -
堆排序 - 不稳定的排序
#include #include #include using namespace std;void HeapAdjust(int* pHeap, int i, int length){ int child; for (; 2*i + 1 < length; i = child) { child = i*2 + 1; int rightC原创 2015-08-18 20:29:28 · 2142 阅读 · 0 评论 -
编程珠玑 第十五章 散列表应用 hash字符串
#define HASH 29989#define MULT 31struct hashNode{ char* strWord; int nCount; hashNode* pNext; hashNode() { strWord = 0; nCount = 0; pNext = 0; }};typedef hashNode* hashNodePtr;/原创 2015-09-01 20:48:35 · 664 阅读 · 0 评论 -
数据结构 --栈的实现
#ifndef STACK_H#define STACK_H#include "stdlib.h"#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OK 1#define OVERFLOW -2#define Status bool#define TRUE 1#define FALSE 0#defi原创 2012-04-19 20:22:55 · 397 阅读 · 0 评论 -
数据结构 栈的应用 -- 迷宫的实现
//node_maze.h#ifndef NODE_MAZE_H#define NODE_MAZE_Hstruct Point{ int x; int y;};struct node{ int ord; Point pt; int di;};#endif//main.cpp#include "Stack.h"#include "node_maze.h"#inc原创 2012-04-19 20:46:43 · 536 阅读 · 0 评论 -
数据结构 栈的应用-- 表达式求值
//EvaluateExpression.h#include "Stack.h" //见上一篇博文#define OP_NUM 7Status in(char ch, char * arr);double EvaluateExpression();void Push_OPDN(SqStack &S1, SqStack &S2);//EvaluateExpression.cp原创 2012-04-19 20:34:39 · 2893 阅读 · 0 评论 -
数据结构 第六章--线索二叉树
线索二叉树是一种不用设栈就可以遍历的二叉树, 如果在某个程序中所用的二叉树需经常遍历或者查找结点在遍历所得到线性序列中的前驱和后继,则应采用线索链表作存储结构。 怎么样才能在遍历的时候不需要设栈呢? 这就需要利用二叉链表中的空链域。若结点有左子树,则其lchild域指示其左孩子,否则令lchild域指示其前驱; 若结点有右子树,则其rchild域指示其右孩子,否则rchild域指示其后继。原创 2012-05-01 16:31:48 · 738 阅读 · 0 评论 -
数据结构--第六章 遍历二叉树
1.二叉树的先序遍历:若二叉树为空,则空操作;否则(1)访问根节点;(2)先序遍历左子树;(3)先序遍历右子树;2.二叉树的中序遍历:若二叉树为空,则空操作;否则(1)中序遍历左子树;(2)访问根节点;(3)中序遍历右子树;3.二叉树的后序遍历:若二叉树为空,则空操作;否则(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根节点;原创 2012-04-29 15:00:00 · 1156 阅读 · 1 评论 -
数据结构 第三章-- 链队列
队列:是一种先进先出(FIFO)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。队尾:允许插入的一端。队头:允许删除的一端。 和线性表类似,队列也可以有两种存储表示。 用链表表示的队列简称链队列,一个链队列显然需要两个分别指示队头和队尾的指针(分别称为头指针和尾指针)才能唯一确定。这里,和线性表的单链表一样,为了操作方便起见,我们原创 2012-04-26 20:40:19 · 866 阅读 · 0 评论 -
数据结构 第三章-- 循环队列(队列的顺序表示和实现)
为充分利用向量空间,克服“假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。 循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front==rear来判别队列是空还是满。 解决这个问题的方法至少有两种:原创 2012-04-26 21:40:38 · 1759 阅读 · 0 评论 -
最大子数组和
/*求子数组的最大和题目输入一个整型数组,数组里有正数也有负数。数组中连续的一个或者多个数组组成一个子数组,每个子数组都要一个和。求所有子数组的和的最大值。要求时间复杂度为O(n). */#include using namespace std;#define N 100int n;int value[N];int MaxSum(in原创 2011-12-20 10:34:48 · 446 阅读 · 0 评论 -
二元查找树-- 在二元树中找到和为某一值的所有路径
//在二元树中找到和为某一值的所有路径//从树的根节点开始往下访问一直到叶节点所经过的所有结点形成的一条路径。//打印出荷与输入整数相等的所有路径 #include #include using namespace std;typedef int value_type;class BinaryNode{public: BinaryNod原创 2011-12-18 13:30:21 · 469 阅读 · 0 评论 -
最小优先队列 解决TopK问题
#include #include #include #include using namespace std;//////// 优先队列#define MAX_HEAP 300class PriorityHeap{public: PriorityHeap(); ~PriorityHeap(); bool empty(); int size(); i原创 2015-08-21 21:46:35 · 875 阅读 · 0 评论