chunlanse2014

导航

文章分类 -  C语言数据结构

1 2 下一页

学习笔记
6.3 二叉树的遍历
摘要:二叉树的遍历方法及递归实现二叉树的遍历是指按照某种顺序访问二叉树中的每个结点,使每个结点被访问一次且仅被访问一次。遍历是二叉树中经常要用到的一种操作。因为在实际应用问题中,常常需要按一定顺序对二叉树中的每个结点逐个进行访问,查找具有某一特点的结点,然后对这些满足条件的结点进行处理。通过一次完整的遍历... 阅读全文

posted @ 2015-06-18 14:43 chunlanse2014 编辑

6.2 基本操作与存储
摘要:二叉树的存储1.顺序存储结构所谓二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。一般是按照二叉树结点从上至下、从左到右的顺序存储。这样结点在存储位置上的前驱后继关系并不一定就是它们在逻辑上的邻接关系,然而只有通过一些方法确定某结点在逻辑上的前驱结点和后继结点,这种存储才有意义。因此,依... 阅读全文

posted @ 2015-06-17 15:30 chunlanse2014 编辑

6.1 二叉树的定义与性质
摘要:6.1.1 二叉树的基本概念1.二叉树二叉树(Binary Tree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。二叉树是有序的,即若将其左、右子树... 阅读全文

posted @ 2015-05-28 17:49 chunlanse2014 编辑

5.4 广义表
摘要:广义表的定义和基本运算顾名思义,广义表是线性表的推广。也有人称其为列表(Lists,用复数形式以示与统称的表List 的区别)。⒈广义表的定义和性质我们知道,线性表是由n 个数据元素组成的有限序列。其中每个组成元素被限定为单元素,有时这种限制需要拓宽。例如,中国举办的某体育项目国际邀请赛,参赛队清单... 阅读全文

posted @ 2015-05-28 16:29 chunlanse2014 编辑

5.3 稀疏矩阵
摘要:稀疏矩阵的三元组表存储设m*n 矩阵中有t 个非零元素且tmu=A->nu; 7 B->nu=A->mu; 8 B->tu=A->tu; 9 /*稀疏矩阵的行、列、元素个数*/10 if (B->tu>0) /*有非零元素则转换*/11 { 12 ... 阅读全文

posted @ 2015-05-21 11:35 chunlanse2014 编辑

5.2 特殊矩阵的压缩存储
摘要:对称矩阵对于一个矩阵结构显然用一个二维数组来表示是非常恰当的,但在有些情况下,比如常见的一些特殊矩阵,如三角矩阵、对称矩阵、带状矩阵、稀疏矩阵等,从节约存储空间的角度考虑,这种存储是不太合适的。下面从这一角度来考虑这些特殊矩阵的存储方法。对称矩阵的特点是:在一个n 阶方阵中,有aij=aji ,其中... 阅读全文

posted @ 2015-05-16 15:19 chunlanse2014 编辑

5.1 多维数组
摘要:本章介绍的数组与广义表可视为线性表的推广,其特点是数据元素仍然是一个表。本章讨论多维数组的逻辑结构和存储结构、特殊矩阵、矩阵的压缩存储、广义表的逻辑结构和存储结构等。5.1.1 数组的逻辑结构数组是我们很熟悉的一种数据结构,它可以看作线性表的推广。数组作为一种数据结构其特点是结构中的元素本身可以是具... 阅读全文

posted @ 2015-05-16 14:12 chunlanse2014 编辑

4.2 串的定长顺序存储及基本运算
摘要:因为串是数据元素类型为字符型的线性表,所以线性表的存储方式仍适用于串,也因为字符的特殊性和字符串经常作为一个整体来处理的特点,串在存储时还有一些与一般线性表不同之处。4.2.1 串的定长顺序存储类似于顺序表,用一组地址连续的存储单元存储串值中的字符序列,所谓定长是指按预定义的大小,为每一个串变量分配... 阅读全文

posted @ 2015-05-15 21:15 chunlanse2014 编辑

4.1 串及其基本运算
摘要:串(即字符串)是一种特殊的线性表,它的数据元素仅由一个字符组成,计算机非数值处理的对象经常是字符串数据,如在汇编和高级语言的编译程序中,源程序和目标程序都是字符串数据;在事物处理程序中,顾客的姓名、地址、货物的产地、名称等,一般也是作为字符串处理的。另外串还具有自身的特性,常常把一个串作为一个整体来... 阅读全文

posted @ 2015-05-14 15:17 chunlanse2014 编辑

3.3 队列—队列的存储实现及运算实现
摘要:与线性表、栈类似,队列也有顺序存储和链式存储两种存储方法。1、顺序队顺序存储的队称为顺序队。因为队的队头和队尾都是活动的,因此,除了队列的数据区外还有队头、队尾两个指针。顺序队的类型定义如下:1 #define MAXSIZE 1024 /*队列的最大容量*/2 typedef struct3 {4... 阅读全文

posted @ 2015-05-14 14:47 chunlanse2014 编辑

3.3 队列
摘要:前面所讲的栈是一种后进先出的数据结构,而在实际问题中还经常使用一种“先进先出” (FIFO---First In First Out)的数据结构:即插入在表一端进行,而删除在表的另一端进行,我们将这种数据结构称为队或队列,把允许插入的一端叫队尾(rear) ,把允许删除的一端叫队头(front)。如... 阅读全文

posted @ 2015-04-28 21:41 chunlanse2014 编辑

3.2 栈的应用举例
摘要:由于栈的“后进先出”特点,在很多实际问题中都利用栈做一个辅助的数据结构来进行求解,下面通过几个例子进行说明。例3.1 简单应用:数制转换问题将十进制数N 转换为r 进制的数,其转换方法利用辗转相除法:以N=3467,r=8 为例,转换方法如下:所以:(3467)10 =(6613)8我们看到所转换的... 阅读全文

posted @ 2015-04-20 13:07 chunlanse2014 编辑

3.1 栈—栈的存储实现和运算实现
摘要:由于栈是运算受限的线性表,因此线性表的存储结构对栈也是适用的,只是操作不同而已。1. 顺序栈利用顺序存储方式实现的栈称为顺序栈。类似于顺序表的定义,栈中的数据元素用一个预设的足够长度的一维数组来实现:datatype data[MAXSIZE],栈底位置可以设置在数组的任一个端点,而栈顶是随着插入和... 阅读全文

posted @ 2015-04-20 09:49 chunlanse2014 编辑

3.1 栈—栈的定义及基本运算
摘要:栈和队列是在软件设计中常用的两种数据结构,它们的逻辑结构和线性表相同。其特点在于运算受到了限制:栈按“后进先出”的规则进行操作,队列按“先进先出”的规则进行操作,故称运算受限制的线性表。栈是限制在表的一端进行插入和删除的线性表。允许插入、删除的这一端称为栈顶,另一个固定端称为栈底。当表中没有元素时称... 阅读全文

posted @ 2015-04-19 19:33 chunlanse2014 编辑

2.4顺序表和链表的比较
摘要:在本章介绍了线性表的逻辑结构及它的两种存储结构:顺序表和链表。通过对它们的讨论可知它们各有优缺点,顺序存储有三个优点:(1) 方法简单,各种高级语言中都有数组,容易实现。(2) 不用为表示结点间的逻辑关系而增加额外的存储开销。(3) 顺序表具有按元素序号随机访问的特点。但它也有两个缺点:(1) 在顺... 阅读全文

posted @ 2015-04-19 19:25 chunlanse2014 编辑

2.3线性表的链式存储和运算—单链表应用举例
摘要:例2.5 已知单链表H,写一算法将其倒置。即实现如图2.22的操作。(a)为倒置前,(b)为倒置后。算法思路:依次取原链表中的每个结点,将其作为第一个结点插入到新链表中去,指针p用来指向当前结点,p为空时结束。算法如下: 1 void reverse (Linklist H) 2 { 3 ... 阅读全文

posted @ 2015-04-19 19:14 chunlanse2014 编辑

2.3线性表的链式存储和运算—静态链表
摘要:下面先请看图2.22 ,在图2.22中,规模较大的结构数组sd[MAXSIZE] 中有两个链表:其中链表SL是一个带头结点的单链表,表示了线性表(a1, a2, a3, a4, a5),而另一个单链表AV是将当前sd 中的空结点组成的链表。 数组sd的定义如下:1 #define MAXSIZE …... 阅读全文

posted @ 2015-04-19 12:03 chunlanse2014 编辑

2.3线性表的链式存储和运算—双向链表
摘要:以上讨论的单链表的结点中只有一个指向其后继结点的指针域next,因此若已知某结点的指针为p,其后继结点的指针则为p->next ,而找其前驱则只能从该链表的头指针开始,顺着各结点的next 域进行,也就是说找后继的时间性能是O(1),找前驱的时间性能是O(n),如果也希望找前驱的时间性能达到O(1)... 阅读全文

posted @ 2015-04-19 11:11 chunlanse2014 编辑

2.3线性表的链式存储和运算—循环链表
摘要:对于单链表而言,最后一个结点的指针域是空指针,如果将该链表头指针置入该指针域,则使得链表头尾结点相连,就构成了单循环链表。如图2.16 所示。在单循环链表上的操作基本上与非循环链表相同,只是将原来判断指针是否为NULL变为是否是头指针而已,没有其它较大的变化。对于单链表只能从头结点开始遍历整个链表,... 阅读全文

posted @ 2015-04-18 20:06 chunlanse2014 编辑

2.3 线性表的链式存储和运算—单链表基本运算
摘要:1. 建立单链表(1)在链表的头部插入结点建立单链表链表与顺序表不同,它是一种动态管理的存储结构,链表中的每个结点占用的存储空间不是预先分配,而是运行时系统根据需求而生成的,因此建立单链表从空表开始,每读入一个数据元素则申请一个结点,然后插在链表的头部,如图2.10 展现了线性表:(25,45,18... 阅读全文

posted @ 2015-04-15 22:01 chunlanse2014 编辑

1 2 下一页