数据结构
文章平均质量分 77
whz_zb
这个作者很懒,什么都没留下…
展开
-
数据结构学习笔记 --- 线性表 (单链表)
1. 引言单链表有带有结点和不带头结点之分,本文分别讨论带头结点的单链表和不带头结点的单链表的一些基本操作,和用头插法、尾插法创建单链表,以及两个算法。2. 带头结点的单链表2.1 带头结点的单链表的存储结构typedef struct LNode{ ElemType data; struct LNode *n原创 2012-02-05 14:56:15 · 1471 阅读 · 0 评论 -
数据结构学习笔记 --- 图(遍历)
1. 图(遍历)原创 2012-03-06 19:20:19 · 701 阅读 · 0 评论 -
数据结构学习笔记 --- 图(最短路径)
图(最短路径)原创 2012-03-06 19:22:45 · 795 阅读 · 0 评论 -
数据结构学习笔记 --- 图(拓扑排序)
图(拓扑排序)原创 2012-03-06 19:21:50 · 701 阅读 · 0 评论 -
数据结构学习笔记 --- 查找(哈希表)
hashing定义了一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。由于通过更短的哈希值比用原始值进行数据库搜索更快,这种方法一般用来在数据库中建立索引并进行搜索,同时还用在各种解密算法中。 设所有可能出现的关键字集合记为u(简称全集)。实际发生(即实际存储)的关键字集合记为k(|k|比|u|小得多)。|k|是集合k中元素的个数。 散原创 2012-03-06 22:50:42 · 3725 阅读 · 0 评论 -
数据结构学习笔记 --- 排序(插入排序、希尔排序)
1. 引言 本文主要讲解一些常见的排序算法。2. 插入排序(1 ) 直接插入排序(straight insertion sort)的作法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫原创 2012-03-24 20:37:48 · 1231 阅读 · 0 评论 -
数据结构学习笔记 --- 排序(归并排序、基数排序)
1. 引言 本文主要讲解一些常见的排序算法。2. 归并排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2原创 2012-03-25 22:51:51 · 825 阅读 · 0 评论 -
数据结构学习笔记 --- 排序(Gnome排序、梳排序)
1. Gnome排序 是插入排序的变形,唯一的区别在于它是使用类似冒泡排序的Swap方法将选择出来的元素移动到合适的位置。也因此它是Stable的排序算法。其思想如下:Gnome Sort is based on the technique used by the standard Dutch Garden Gnome (Du.: tuinkabouter). Here is how a原创 2012-03-26 22:17:54 · 1378 阅读 · 0 评论 -
数据结构学习笔记 --- 查找(静态查找表)
1. 引言 本文主要讲解静态查找表。静态查找表在查找的过程中不改变表的状态——不插不删。他适合用于不变动或不常变动的表的查找。如高考成绩表、本单位职工信息表等。下面分别介绍顺序查找,有序表的折半查找,静态树表的查找。2. 静态查找表(1)顺序查找、有序表的折半查找#include "ds.h"#define T原创 2012-03-10 11:43:28 · 5134 阅读 · 0 评论 -
数据结构学习笔记 --- 二叉树
#include "ds.h"#define CHAR // 字符型//#define INT // 整型(二者选一)#ifdef CHARtypedef char TElemType;TElemType Nil=' '; // 字符型以空格符为空#define form "%c" // 输入输出的格式为%c#endif#ifdef INTtypedef int TElemT原创 2012-02-21 23:29:10 · 1023 阅读 · 0 评论 -
数据结构学习笔记 --- 二叉排序树和平衡二叉树(动态查找表)
1. 引言 本文主要二叉排序树和平衡二叉树。2. 二叉排序树#include "ds.h"#define N 10 // 数据元素个数typedef int KeyType; // 设关键字域为整型struct ElemType // 数据元素类型{ KeyType key; int other原创 2012-03-13 23:22:08 · 3084 阅读 · 1 评论 -
从B 树、B+ 树、B* 树谈到R 树
转自:http://blog.csdn.net/v_JULY_v/article/details/6530142从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修转载 2012-03-15 22:09:05 · 769 阅读 · 0 评论 -
数据结构学习笔记 --- 排序(选择排序、堆排序)
1. 引言 本文主要讲解一些常见的选择排序和堆排序。2. 选择排序选择排序的基本思想是每步从待排序的记录中选出排序码最小的记录,顺序存放在已排序的记录序列的后面,直到全部排完。选择排序中主要使用直接选择排序和堆排序。直接选择排序(不稳定) 直接选择排序的过程是:首先在所有记录中选出序码最小的记录,把它与第1个记录交换,然后在原创 2012-03-24 21:07:01 · 959 阅读 · 0 评论 -
胜者树与败者树
胜者树与败者树 胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。 不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。 胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信转载 2012-04-04 11:14:51 · 55057 阅读 · 20 评论 -
数据结构学习笔记 --- 线性表 (顺序表)
1. 引言 线性表从存储结构上可以分为顺序存储结构和链式存储结构。顺序存储结构:是指用一组连续的存储单元依次存储线性表的数据元素,比如说数组。链式存储结构就是可以用不连续的地址来存储线性表的数据元素。常见的线性表的基本操作:(12个)1. InitList(L) 构造一个空的线性表L,即表的初始化。2. DestroyList(L) 销毁线性表,原创 2012-02-04 19:24:00 · 1611 阅读 · 0 评论 -
数据结构学习笔记 --- 前言
1. 引言 在接下来的几个月内主要学习数据结构,参考资料如下:1. 数据结构(c语言版) --- 清华大学出版社 ---作者:严蔚敏 吴伟民2. 《数据结构》 算法实现及解析 --- 配合严蔚敏 吴伟民编著的《数据结构》 --- 西安电子科技大学出版社 --- 作者:高一凡主要学习章节如下:1. 线性表2.原创 2012-02-04 15:50:57 · 1135 阅读 · 0 评论 -
数据结构学习笔记 --- 图(十字链表)
1. 图(十字链表)原创 2012-03-06 19:19:35 · 842 阅读 · 0 评论 -
数据结构学习笔记 --- 图(邻接表)
1. 图(邻接表)#include "ds.h"// 图的数组(邻接矩阵)存储表示#define INFINITY INT_MAX // 用整型最大值代替∞#define MAX_VERTEX_NUM 20 // 最大顶点个数#define MAX_NAME 5 // 顶点字符串的最大长度+1#define MAX_INFO 20 // 相关信原创 2012-03-06 19:18:30 · 1564 阅读 · 0 评论 -
数据结构学习笔记 --- 线性表 (双向链表、循环链表)
1. 引言本文讨论双向链表、循环链表的一些基本操作。2. 双向链表2.1 双向链表的存储结构typedef struct DuLNode{ ElemType data; DuLNode *prior,*next;}DuLNode,*DuLinkList;2.2 双向链表的基本操作(带头结点)原创 2012-02-05 22:40:13 · 2093 阅读 · 0 评论 -
数据结构学习笔记 --- 线性表 (一些常见的关于链表的算法和面试题)
1. 引言 本文主要讲解一些常见的关于链表的算法和面试题。2. 单链表的反序(不带头结点)/* 不带头结点的单链表逆转 */#include "ds.h"using namespace std;typedef int ElemType;typedef struct LNode{ ElemType data;原创 2012-02-07 22:04:32 · 2698 阅读 · 0 评论 -
数据结构学习笔记 --- 队列(链队列)
1. 引言 本文主要讲解链队列。和栈一样,队列也是操作受限的线性表,只允许在队尾插入元素,在对头删除元素。对于链队列结构,为了便于插入元素,设立了队尾指针。这样插入元素的操作与队列长度无关。2. 链队列#include "ds.h"typedef int QElemType;typedef struct QNode{ QEl原创 2012-02-12 12:15:37 · 1099 阅读 · 0 评论 -
数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
1. 引言 本文主要讲解队列顺序表示和实现。队列的顺序表示为什么要采用循环方式? 首先分析一下非循环队列的表示和实现及其存在的问题。2.非循环队列的表示和实现#include "ds.h"typedef int QElemType; #define QUEUE_INIT_SIZE 10 // 队列存储空间的初原创 2012-02-12 17:53:14 · 3323 阅读 · 0 评论 -
数据结构学习笔记 --- 线性表 (一元多项式的表示及相加)
1. 引言 本文主要讲解一元多项式的表示及相加。2. 一元多项式的表示和及相加/* 一元多项式的表示和相加 */#include "ds.h"using namespace std;#ifdef TEST_LISTtypedef int ElemType;#elsetypedef struct {原创 2012-02-07 20:42:19 · 3804 阅读 · 1 评论 -
数据结构学习笔记 --- 线性表 (应用举例)
1. 引言 本文主要讲解一个线性表 (应用举例)2. 具有实际意义的线性链表#include "ds.h"using namespace std;typedef int ElemType;// 结点类型typedef struct LNode{ ElemType data; struct LNode *next;}*Lin原创 2012-02-07 08:33:46 · 6923 阅读 · 1 评论 -
数据结构学习笔记 --- 队列的应用举例(离散事件模拟)
1. 引言 本文主要讲解一个队列和线性表的例子——离散事件模拟。2. 离散事件模拟——银行业务模拟#include "ds.h"#define FILE_TEST// 银行业务模拟#define Qu 4 // 客户队列数#define Khjg 5 // 两相邻到达的客户的时间间隔最大值#define Blsj原创 2012-02-12 21:46:30 · 3772 阅读 · 1 评论 -
数据结构学习笔记 --- 栈
1. 引言 本文主要讲解顺序栈和链式栈。2. 顺序栈//栈的顺序存储结构和其基本操作#include "ds.h"#define STACK_INIT_SIZE 10 // 存储空间初始分配量#define STACK_INCREMENT 2 // 存储空间分配增量typedef int SElemType;t原创 2012-02-12 09:43:20 · 1015 阅读 · 0 评论 -
数据结构学习笔记 --- 栈、队列 (习题)
1. 引言 本文主要讲解栈和队列的一些常见的面试题。2.一些常见的面试题2.1 题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能原创 2012-02-14 20:34:37 · 1181 阅读 · 0 评论 -
数据结构学习笔记 --- 栈的应用举例
1. 引言 本文主要讲解栈的一些应用:(1)迷宫求解 (2)表达式求值 (3)栈与递归 ——hanoi塔(4)括号匹配2. 迷宫求解2.1 解法1#include // test #if 0#define MAZE_COLUMN 7 // 迷宫的列数#define MAZE_ROW 7 // 迷宫的原创 2012-02-12 10:04:12 · 1150 阅读 · 0 评论 -
数据结构学习笔记 --- 线索二叉树
1. 引言为了更方便、快捷地遍历二叉树,最好在二叉树的结点上增加2个指针,它们分别指向遍历二叉树时该结点的前驱和后继。这样,从二叉树的任一结点都可以方便的找到其他结点。但这样做大大降低了结构的存储密度。另外,根据二叉树的性质,有:n0 = n2 + 1。空链域=2n0 + n1(叶子结点有两个空链域,度为1的结点有一个空链域)=n0+n2+1原创 2012-02-26 21:25:04 · 1413 阅读 · 0 评论 -
数据结构学习笔记 --- 树
1. 引言一棵树无论有多少叉,它最多有一个长子和一个排序恰在其下的兄弟。根据这样的定义,则每个结点的结构就都统一到了二叉链表结构上了。这样有利于对结点进行操作。2. 树的二叉链表(孩子-兄弟)存储#include "ds.h"typedef char TElemType;TElemType Nil=' '; // 以空格符原创 2012-02-26 23:05:47 · 1090 阅读 · 0 评论 -
数据结构学习笔记 --- 最优二叉树(赫夫曼树)
1. 引言最优二叉树是带权路径长度最短的二叉树。根据结点的个数,权值的不同,最优二叉树的形状也各不相同。它们的共同点是:带权值的结点都是叶子结点。权值越小的结点,其到根结点的路径越长。构造最优二叉树的方法如下:(1) 将每个带有权值的结点作为一棵仅有根结点的二叉树,树的权值为结点的权值。(2) 将其中两棵权值最小的树组成一棵新的二叉树,新树的权值为两棵树的权原创 2012-02-28 23:49:25 · 2064 阅读 · 0 评论 -
数据结构学习笔记 --- 树(习题)
/*判断2棵二叉树是否相等在这里要对一种情况进行说明当root1的左子树与root2的左子树相同,root1的右子树与root2的右子树相同时,这两颗二叉树相同。当root1的左子树与root2的右子树相同,root1的右子树与root2的左子树相同时,这两颗二叉树同样相同。以下是实现代码*/bool IsBSTEqual(BNode* root1,BNode* root2){原创 2012-03-01 21:39:09 · 890 阅读 · 0 评论 -
数据结构学习笔记 --- 图(连通性)
图(连通性)原创 2012-03-06 19:21:10 · 925 阅读 · 0 评论 -
数据结构学习笔记 --- 图(数组表示法)
1. 图的数组表示法2. 代码#include "ds.h"// 图的数组(邻接矩阵)存储表示#define INFINITY INT_MAX // 用整型最大值代替∞#define MAX_VERTEX_NUM 26 // 最大顶点个数#define MAX_NAME 5 // 顶点字符串的最大长度+1#define MAX_INFO 20原创 2012-03-06 19:16:44 · 6442 阅读 · 1 评论 -
数据结构学习笔记 --- 排序(冒泡排序、快速排序)
1. 引言 本文主要讲解一些常见的排序算法。2. 冒泡排序冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至第n-i个数,若第i个数比后一个数大(则升序,小则降序)则交换两数。#include "ds.h"#define N 8// 将a中整数序列重新排列成自小至大有序的整数序列(起原创 2012-03-24 20:57:23 · 1279 阅读 · 0 评论