Marie梦想家

学习笔记

struct与typedef struct的简单区分

第一种 struct{ int x=1; }test1,test2; test1 test2 是结构体的变量,不用声明,因此可以直接打印 test1.x,test2.x struct{ int x=1; }test1,test2; int main(){ print...

2019-06-05 20:41:07

阅读数 21

评论数 0

浙大数据结构——5.3集合及运算

集合的表示 采用数组存储形式 typedef struct{ ElementType Data; int Parent; }SetType; 集合运算 1、查找某元素所在的集合 int Find(SetType S[],ElementType X){ int i; for(i...

2019-05-15 00:10:41

阅读数 27

评论数 0

浙大数据结构——5.2哈夫曼树与哈夫曼编码

什么是哈夫曼树 哈夫曼树的定义 带权路径长度:设二叉树有n个叶子结点,每个叶子结点带有权值Wk,从根结点到每个叶子结点的长度为lk,则每个叶子结点的带权路径长度之和就是: 【例】有五个叶子结点,权值分别为[1,2,3,4,5],用此权值序列可以构造出不同的多个二叉树。 1、WP...

2019-04-22 21:52:56

阅读数 231

评论数 0

浙大数据结构——5.1堆

什么是堆 优先队列:特殊的“队列”,取出元素的顺序是按照元素的优先级大小,而不是进入队列的先后顺序。 优先队列可以用数组、链表、有序数组、有序链表实现,也可以用完全二叉树表示。其中,完全二叉数的每个结点都比其子树的数值大。如下图所示: 堆的抽象数据类型描述 类型名称:最大堆 ...

2019-04-18 23:35:39

阅读数 26

评论数 0

浙大数据结构——线性结构之习题选讲(单链表的逆转)

Q:Java中没有指针,是不是不能表示链表呢? A:错误。链表是一种抽象的数据结构。链表的结点需要两个域,一个存数据,一个存指针(下一个结点的地址)。C和C++只是提供了一种特殊的机制来实现这种功能。 输入样例: 00100 6 4 //分别表示链表头结点的地址,链表的结点个数,...

2019-04-15 22:01:24

阅读数 44

评论数 0

浙大数据结构——小白专场:是否同一棵二叉搜索树

题意理解 给定一个插入序列就唯一确定一个二叉搜索树。 一棵给定的二叉搜索树却可以由多种不同的插入序列得到。 Q:对于输入的各种插入序列,如何判断它们能否生成一样的二叉搜索树? 求解思路 1、分别建二叉搜索树判别方法 2、不建树的判别方法 3、建一棵树,再判别其他序列是否与该树一致 ...

2019-04-15 21:27:59

阅读数 55

评论数 0

浙大数据结构——4.2平衡二叉树

什么是平衡二叉树 任一结点左、右子树高度差的绝对值不超过1,即 |BF(T)≤1|(其中BF(T)=hl-hr) Q:平衡二叉树的高度能达到log2n吗? A:设高度为h的平衡二叉树的最少结点数为nh,nh=n(h-1)+n(h-2)+1,类似斐波那契数列,所以nh=F(h+2)-1 平衡...

2019-04-14 23:04:21

阅读数 47

评论数 0

浙大数据结构——4.1二叉搜索树

什么是二叉搜索树 一棵二叉树,可以为空也可以不为空。满足以下性质: 1、非空左子树的所有键值都小于其根节点的键值。 2、非空右子树的所有键值都大于其根节点的键值。 3、左、右子树都是二叉搜索树。 二叉树操作的特别函数 1、根据键值找地址 //递归法 Position Find(E...

2019-04-08 22:29:45

阅读数 69

评论数 2

浙大数据结构——小白专场:树的同构

二叉树的表示 结构数组表示二叉树:静态链表 #define MaxTree 10 #define ElementType char #define Tree int #define Null -1 struct TreeNode{ ElementType Element; Tree Le...

2019-03-24 17:57:07

阅读数 79

评论数 0

浙大数据结构——3.3二叉树的遍历

二叉树的递归遍历 (1)先序遍历(父、左、右) void PreOrderTraversal(BinTree BT){ if(BT){ printf("%d",BT->Data); PreOrderTraversal(BT->Left...

2019-03-24 15:45:01

阅读数 100

评论数 0

浙大数据结构——3.2二叉树及存储结构

二叉树的定义 一个有穷的结点集合。这个集合可以为空,若不为空,则由根节点和称为其左子树TL和右子树TR的两个不相交的二叉树组成。 1、五种基本形态:空、一个结点、一个结点+左子树、一个结点+右子树、一个结点+左子树+右子树。 2、二叉树的子树有左右顺序之分。 3、特殊二叉树:斜二叉树、完美...

2019-03-19 14:45:02

阅读数 347

评论数 0

浙大数据结构——3.1树与树的表示

什么是树? 客观世界中许多事物存在层次关系 查找 根据某个关键字K,从集合R中找出关键字与K相同的记录。 1、静态查找 2、动态查找 静态查找 1、顺序查找 #define MAXSIZE 10; typedef struct LNode *List; struct LNode{...

2019-03-17 15:57:30

阅读数 213

评论数 2

浙大数据结构——小白专场:一元多项式的加法与乘法运算

一、多项式的表示 typedef struct PolyNode *Polynomial; struct PolyNode{ int coef; int expon; Polynomial link; }; 二、程序框架 int main(){ Polynomial P1,P...

2019-03-16 22:03:42

阅读数 91

评论数 0

浙大数据结构——2.4应用实例:多项式加法运算

1、结构体 struct PolyNode{ int coef;//指数 int expon;//系数 struct PolyNode *link; }; typedef struct PolyNode *Polynomial; Polynomal P1,P2; 2、操作 vo...

2019-03-15 20:15:46

阅读数 78

评论数 0

浙大数据结构——2.3队列

什么是队列 具有一定操作约束的线性表。 队列的抽象数据类型描述 类型名称:队列 数据对象集:一个有0个或多个元素的有穷线性表。 操作集:生成空队列、判断队列是否已满、将数据元素插入队列、判断队列是否为空、删除队头元素并返回。 队列的顺序存储实现 1、结构体 #define Max...

2019-03-14 22:59:12

阅读数 50

评论数 0

浙大数据结构——2.2堆栈

什么是堆栈 具有一定操作约束的线性表。表达式求值,就是堆栈的应用。 后缀表达式 平常生活中所用的是中缀表达式。而计算机需要使用后缀表达式。 堆栈的抽象数据类型描述 类型名称:堆栈 数据对象集:一个有0个或多个元素的有穷线性表。 操作集:生成空堆栈、判断堆栈是否已满、将元素item压入...

2019-03-14 21:22:52

阅读数 89

评论数 0

浙大数据结构——2.1线性表及其实现

多项式的表示 eg1:一元多项式及其运算 方法一:顺序存储结构直接表示。使用数组下标表示指数,对应值表示系数。弊端:不适合非零项多、指数大的多项式。 方法二:顺序存储结构表示非零项。使用二维数组存储指数和系数。弊端:不适合多项式的运算。 方法三:链表存储非零项。 什么是线性表 由同类型...

2019-03-14 14:12:57

阅读数 77

评论数 0

浙大数据结构——1.3最大子列和问题

算法1:暴力法,复杂度为N^3。 int MaxSubseqSum1( int A[], int N ) { int ThisSum, MaxSum = 0; int i, j, k; for( i = 0; i < N; i++ ) { /* i...

2019-03-08 15:17:41

阅读数 97

评论数 0

浙大数据结构——1.2什么是算法

算法的定义 eg1:排序算法的伪码描述。 什么是好算法? 两个衡量标准: 空间复杂度S(n):占用存储单元的长度。 时间复杂度T(n):耗费时间的长度。 eg2:分析1.1例2打印正整数的两种算法的空间利用。 1、循环算法:for循环没有调用函数,始终占用一个单元空间。 2、递归算...

2019-03-07 21:47:48

阅读数 119

评论数 0

浙大数据结构——1.1什么是数据结构

数据结构的定义(略) eg1:如何在书架上摆放图书? 1、随便放:好放不好找。 2、按字母放:好找不好放。 3、按类别字母放。 结论:解决问题方法的效率,与数据组织方式有关。 eg2:实现函数PrintN,使得传入一个正整数N后,能顺序打印出从1到N的全部正整数。 方法一:循环打印。...

2019-03-07 15:58:08

阅读数 132

评论数 0

提示
确定要删除当前文章?
取消 删除