
数据结构
算法使人头秃
不在人间见白头
想成为更好的自己
展开
-
数据结构(c语言版 5.2.2 二叉树的其他操作举例)
查找数据元素。Search(bt, x):在以bt为二叉树的根结点指针的二叉树中查找数据元素x。查找成功时返回该结点的指针;查找失败时返回空指针。算法实现如下,注意遍历算法中的Visit (bt->data) 等同于其中的一组操作步骤。二叉树的元素查找算法BiTree Search(BiTree *bt,elemtype x){ ...原创 2020-05-04 20:40:29 · 470 阅读 · 0 评论 -
数据结构(c语言版 5.2.1 二叉树的遍历)
1.先序遍历先序遍历(DLR)的递归过程为:若二叉树为空,遍历结束。否则:(1)访问根结点;(2)先序遍历根结点的左子树;(3)先序遍历根结点的右子树。算法:void PreOrder (BiTree bt) /* 先序遍历二叉树bt*/{ if (bt==NULL) return; /* 递归调用的结束条件*/Visit(bt->data); ...原创 2020-04-30 20:56:19 · 444 阅读 · 0 评论 -
数据结构 (c语言版)(5.2二叉树)
1.二叉树的定义二叉树(Binary Tree)是n个结点的有限集合,该集合或者为空、或者由一个称为根(Root)的结点及两个不相交的、被分别称为根结点的左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树。二叉树的五种基本形态:2.二叉树的相关概念(1)满二叉树在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上,这样的一棵二叉树称为满二叉树。...原创 2020-04-29 22:04:24 · 358 阅读 · 0 评论 -
数据结构(c语言版)(5.1树)
树的定义:二元组的形式:T=(D, R)其中,D为树T中结点的集合,R为树中结点之间关系的集合。当树T为空树时,即D=Φ;当树T不为空树时,有:D={Root}∪DF其中,Root为树T的根结点,DF为树T的根Root的子树集合从树的定义和图(a)的示例可以看出,树具有下面两个特点:(1)树的根结点没有直接前趋,除根结点之外的所有结点有且只有一个直接前趋。(2)树中所有结点可以...原创 2020-04-28 21:18:46 · 378 阅读 · 1 评论 -
数据结构(c语言版)(排序)
直接插入排序示例:一趟快排序过程示例:第一次查找交换:从high向前查找小于data[0].key的记录,得到结果:从low向后查找大于data[0].key的记录,得到结果:第二次查找交换:从high向前查找小于data[0].key的记录,得到结果:从low向后查找大于data[0].key的记录,得到结果:第三次查找交换:从high向前查找小于data[0]....原创 2020-04-27 15:59:12 · 233 阅读 · 0 评论 -
数据结构(c语言版)(3.1 栈的应用 表达式求值问题)
表达式求值问题:表达式求值是程序设计语言编译中一个最基本的问题。它的实现也需要栈的运用。下面介绍的算法是由运算符优先级确定运算顺序的对表达式求值算法。21:36:29一个表达式是由运算数(operand)、运算符(operator)和界限符(delimiter)组成的有意义的式子。一般地,运算数既可以是常量又可以是被说明的变量或常量标识符。运算符从运算数的个数上分,有单目运算符和双目运算符;...原创 2020-04-22 21:59:50 · 1450 阅读 · 0 评论 -
数据结构(c语言版)(3.1 栈的应用 数值转换问题)
【例3.1】 数制转换问题。将十进制数N转换为r进制的数,其转换方法为利用辗转相除法。以N=3467,r=8为例,转换方法如下:按逆序取余数,即得转换结果:(3467)10=(6613)8。可以看出,转换得到的八进制数是按低位到高位的顺序产生的,而转换结果的输出通常是从高位到低位依次输出,恰好与产生过程相反,因此,在转换过程中,每得到一位八进制数就将其进栈保存,转换完毕后再依次出栈,则正好是...原创 2020-04-22 21:42:10 · 1520 阅读 · 0 评论 -
数据结构(c语言版)(3.1栈)
1.栈(Stack)是限制在表的一端进行插入和删除操作的线性表。允许进行插入、删除操作的这一端称为栈顶(Top),另一个固定端称为栈底。当表中没有元素时称为空栈。如图所示的栈中有三个元素,进栈的顺序是a1、a2、a3,当需要出栈时其顺序为a3、a2、a1,所以栈又称为“后进先出”(Last-In First-Out,LIFO)或“先进后出”(First-In Last-Out,FILO)的线性表,...原创 2020-04-19 23:36:59 · 446 阅读 · 0 评论 -
数据结构(c语言版)(2.2.1顺序表的其他操作)
【例2.1】 将顺序表(a1, a2, …, an)重新排列为以a1为界的两部分:a1前面的值均比a1小、a1后面的值均比a1大(这里假设数据元素的类型具有可比性,不妨设为整型),操作前后如图所示。这一操作称为划分,a1称为基准。划分的方法有多种,下面介绍的划分算法思路简单,但性能较差。基本思路:从第二个元素开始到最后一个元素,逐一向后扫描。(1)当前数据元素ai比a1大时,表明它已经在a1...原创 2020-04-13 21:23:29 · 1575 阅读 · 0 评论 -
数据结构(c语言版)( 2.2 顺序表)
1.顺序表的初始化顺序表的初始化即构造一个空表,这对表是一个加工型的运算,因此,将L设为指针参数,首先动态分配存储空间,然后将表中last指针置为-1,表示表中没有数据元素。算法如下:SeqList *init_SeqList( ){ SeqList *L;L=malloc(sizeof(SeqList));L->last=-1;return L;}设调用函数为...原创 2020-04-13 20:48:29 · 598 阅读 · 0 评论 -
数据结构(c语言版)(2.1线性表)
线性表上的基本操作(1)线性表初始化:Init_List(L)。初始条件:表L不存在。操作结果:构造一个空的线性表L。(2)求线性表的长度:Length_List (L)。初始条件:表L存在。操作结果:返回线性表中的所含元素的个数。(3)取表元:Get_List (L, i)。初始条件:表L存在且1≤i≤Length_List(L)。操作结果:返回线性表L中的第i个元素的值或地址...原创 2020-04-12 11:19:41 · 505 阅读 · 0 评论 -
数据结构(c语言版)(一)简单的概念了解
(1)数据结构是一门研究非数值计算的程序设计问题中计算机的_处理对象__ 及它们之间的 ___操作_____和运算等的学科。(2)数据结构包括数据的_逻辑__结构和 __存储__结构。(3)数据结构从逻辑上划分为三种基本类型_线性__,图形_,树形。(4)数据的物理结构被分为顺序、链式、索引和___散列__四种。(5)一种抽象数据类型包括_数据结构_ 和 定义在其上的一组操作 两部分。...原创 2020-04-11 23:45:03 · 625 阅读 · 0 评论