淡水求咸

博客园已经停止更新,请移步 http://lovecjh.com/

导航

2011年12月31日

C/C++版数据结构之树<二>

摘要: 接着上节讲数据结构中的树,要理解树,最重要的是要理解:二叉排序树、平衡二叉树和红黑树。今天就来讨论这几种树。二叉排序树 概念:二叉排序树又叫二叉查找树、二叉搜索树、二叉检索树。二叉排序树是二叉树的一个特化,二叉排序树规定了每个结点的关键字均大于其左子树上所有的结点的关键字,同时小于或等于其右子树上所有结点的关键字。所以,从二叉排序树的根结点一直往左走,直到底,就可以得到最小值;从根结点一起往右走,直到底,就可以得到最大值。二叉排序树的这种特殊性质使得它在查找元素方面的时候特别方便,每一次查找都可以去掉一半的元素,因此查找的时间是O(logN)。二叉排序树的算法:(1)二叉排序树的查找算法typ 阅读全文

posted @ 2011-12-31 14:48 深圳彦祖 阅读(3051) 评论(0) 推荐(1) 编辑

2011年12月30日

C/C++版数据结构之树<一>

摘要: 树是数据结构中很重要的一环,更是C/C++高手的挚爱。 今天就来讨论下数据结构中的树。 先梳理下关于树一些基本概念。树的基本概念(1)树(Tree)的概念:树是一种递归定义的数据结构,是一种重要的非线性数据结构。树可以是一棵空树,它没有任何的结点;也可以是一棵非空树,至少含有一个结点。(2)根(Root):有且仅有一个结点的非空树,那个结点就是根。(3)子树(Subtree):在一棵非空树中,除根外,其余所有结点可以分为m(m≥0)个互不相交的集合。每个集合本身又是一棵树,称为根的子树。(4)结点(Node):表示树中的元素及若干指向其子树的分支。(5)结点的度(Degree):一个结点拥有. 阅读全文

posted @ 2011-12-30 14:53 深圳彦祖 阅读(11252) 评论(0) 推荐(9) 编辑

C/C++版数据结构之链表<三>

摘要: 今天来讨论下链表中的双向链表。双向链表:概念:在双向链表中,结点除含有数据域外,还含有两个指针域:一个存储直接后继结点的地址,称为右链域;另一个存储直接前驱结点的地址,称为左链域。typedef struct node{ int num; //数值域 struct node *lnext; //左链域指针 struct node *rnect; //右链域指针}stud; 双向链表常用算法:先对三个指针作个声明:head:用来指向链表的头部。链表需要一个指针来标识,这就是头指针。p1:用来指向新结点,以及用来遍历链表的每一个结点。p2:... 阅读全文

posted @ 2011-12-30 12:41 深圳彦祖 阅读(2280) 评论(0) 推荐(1) 编辑

2011年12月29日

C/C++版数据结构之链表<二>

摘要: 本文就循环链表做一些讨论:循环链表: 概念:所谓循环链表,就是在单链表的基础上,把链表最后一个结点的链表指针指向链表的头结点的地址,就构成了一个循环链表。 关键算法:先对三个指针作下声明:head:用来指向链表的头部。链表需要一个指针来标识,这就是头指针。p1:用来指向新结点,以及用来遍历链表的每一个结点。p2:用来指向当前结点。(1)循环链表创建算法创建一个结点数目为n的循环链表:#include <malloc.h>typedef struct node{ int num; struct node *next;}stud;stud* Create(int n){ stud... 阅读全文

posted @ 2011-12-29 21:09 深圳彦祖 阅读(712) 评论(0) 推荐(0) 编辑

C/C++版数据结构之链表<一>

摘要: 链表主要就单链表、循环链表和双向链表3种链表进行讨论。一、单链表 概念:所谓单链表,是指数据结点是单向排列的。一个单链表结点,其结构类型分为两部分: (1)数据域:用于存储数据元素的值。 (2)指针域(链域):用于存储下一个结点地址或者说指向其直接后继结点的指针。算法:一般声明3个指针来操作链表:head:用来指向链表的头部。链表需要一个指针来标识链表,这就是头指针。p1:用来指向新结点,以及用来遍历链表的每一个结点。p2:用来指向当前结点。(1)单链表创建算法创建结点数目为n的链表:#include <malloc.h>typedef struct node{ int num; 阅读全文

posted @ 2011-12-29 19:42 深圳彦祖 阅读(1048) 评论(0) 推荐(0) 编辑