数据结构
Hillbox
这个作者很懒,什么都没留下…
展开
-
天勤数据结构笔记——第六章 树与二叉树(大题)
1、基础题(1)略(2)采用层次遍历,visit(q); 改为 count++;void level(BTNode *p,int &count){ count=0; int front=rear=0; BTNode *que[maxSize]; BTNode *q; if(p!=NULL){ //根结点入队 ...原创 2019-10-23 01:06:16 · 365 阅读 · 0 评论 -
天勤数据结构笔记——第六章 树与二叉树(代码)
二叉树的链式存储结构typedef struct BTNode{ char data; struct BTNode *lchild; struct BTNode *rchild;}BTNode;先序遍历void preorder(BTNode *p){ if(p!=NULL){ visit(p); preorde...原创 2019-10-17 01:45:37 · 391 阅读 · 0 评论 -
浙大数据结构——小白专场:一元多项式的加法与乘法运算
一、多项式的表示typedef struct PolyNode *Polynomial;struct PolyNode{ int coef; int expon; Polynomial link;};二、程序框架int main(){ Polynomial P1,P2,PP,PS; //读入多项式1 P1=ReadPoly(); //读入多项式2 P...原创 2019-03-16 22:03:42 · 519 阅读 · 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平衡二叉树的调整RL旋转、RR旋转、LL旋转、LR旋转...原创 2019-04-14 23:04:21 · 286 阅读 · 0 评论 -
浙大数据结构——5.2哈夫曼树与哈夫曼编码
什么是哈夫曼树哈夫曼树的定义带权路径长度:设二叉树有n个叶子结点,每个叶子结点带有权值Wk,从根结点到每个叶子结点的长度为lk,则每个叶子结点的带权路径长度之和就是:【例】有五个叶子结点,权值分别为[1,2,3,4,5],用此权值序列可以构造出不同的多个二叉树。 1、WPL = 5X1 + 4X2 + 3X3 + (1+2)X4 =34 2、WPL =...原创 2019-04-22 21:52:56 · 8553 阅读 · 0 评论 -
浙大数据结构——线性结构之习题选讲(单链表的逆转)
Q:Java中没有指针,是不是不能表示链表呢?A:错误。链表是一种抽象的数据结构。链表的结点需要两个域,一个存数据,一个存指针(下一个结点的地址)。C和C++只是提供了一种特殊的机制来实现这种功能。输入样例:00100 6 4 //分别表示链表头结点的地址,链表的结点个数,需要反转的个数00000 4 9999900100 1 1230968237...原创 2019-04-15 22:01:24 · 459 阅读 · 0 评论 -
浙大数据结构——小白专场:是否同一棵二叉搜索树
题意理解给定一个插入序列就唯一确定一个二叉搜索树。一棵给定的二叉搜索树却可以由多种不同的插入序列得到。Q:对于输入的各种插入序列,如何判断它们能否生成一样的二叉搜索树?求解思路1、分别建二叉搜索树判别方法2、不建树的判别方法3、建一棵树,再判别其他序列是否与该树一致搜索树的表示typedef struct TreeNode *Tree;struct Tr...原创 2019-04-15 21:27:59 · 280 阅读 · 0 评论 -
浙大数据结构——4.1二叉搜索树
什么是二叉搜索树一棵二叉树,可以为空也可以不为空。满足以下性质:1、非空左子树的所有键值都小于其根节点的键值。2、非空右子树的所有键值都大于其根节点的键值。3、左、右子树都是二叉搜索树。二叉树操作的特别函数1、根据键值找地址//递归法Position Find(ElementType X,BinTree BST){ if(!BST){ return NUL...原创 2019-04-08 22:29:45 · 1469 阅读 · 2 评论 -
浙大数据结构——小白专场:树的同构
二叉树的表示结构数组表示二叉树:静态链表#define MaxTree 10#define ElementType char#define Tree int#define Null -1struct TreeNode{ ElementType Element; Tree Left; Tree Right;}T1[MaxTree],T2[MaxTree];...原创 2019-03-24 17:57:07 · 295 阅读 · 1 评论 -
浙大数据结构——3.3二叉树的遍历
二叉树的递归遍历(1)先序遍历(父、左、右)void PreOrderTraversal(BinTree BT){ if(BT){ printf("%d",BT->Data); PreOrderTraversal(BT->Left); PreOrderTraversal(BT->Right); }} (2)中序遍历(左、父、右)void Pr...原创 2019-03-24 15:45:01 · 465 阅读 · 0 评论 -
浙大数据结构——3.1树与树的表示
什么是树?客观世界中许多事物存在层次关系查找根据某个关键字K,从集合R中找出关键字与K相同的记录。1、静态查找2、动态查找静态查找1、顺序查找#define MAXSIZE 10;typedef struct LNode *List;struct LNode{ ElementType Element[MAXSIZE]; int length;};in...原创 2019-03-17 15:57:30 · 1519 阅读 · 3 评论 -
浙大数据结构——2.4应用实例:多项式加法运算
1、结构体struct PolyNode{ int coef;//指数 int expon;//系数 struct PolyNode *link;};typedef struct PolyNode *Polynomial;Polynomal P1,P2;2、操作void Attach(int c,int e,Polynomial *pRear){ Polynom...原创 2019-03-15 20:15:46 · 376 阅读 · 0 评论 -
浙大数据结构——1.2什么是算法
算法的定义eg1:排序算法的伪码描述。什么是好算法?两个衡量标准:空间复杂度S(n):占用存储单元的长度。时间复杂度T(n):耗费时间的长度。eg2:分析1.1例2打印正整数的两种算法的空间利用。1、循环算法:for循环没有调用函数,始终占用一个单元空间。2、递归算法:不停地调用函数,程序在系统会占用越来越多的空间。eg3: 分析1.1例3多项式给定点值的两种...原创 2019-03-07 21:47:48 · 330 阅读 · 0 评论 -
浙大数据结构——1.1什么是数据结构
数据结构的定义(略)eg1:如何在书架上摆放图书?1、随便放:好放不好找。2、按字母放:好找不好放。3、按类别字母放。结论:解决问题方法的效率,与数据组织方式有关。eg2:实现函数PrintN,使得传入一个正整数N后,能顺序打印出从1到N的全部正整数。方法一:循环打印。方法二:递归打印。结论:解决问题方法的效率,与空间利用效率有关。eg3:计算给定多项式在给...原创 2019-03-07 15:58:08 · 309 阅读 · 0 评论 -
浙大数据结构——3.2二叉树及存储结构
二叉树的定义一个有穷的结点集合。这个集合可以为空,若不为空,则由根节点和称为其左子树TL和右子树TR的两个不相交的二叉树组成。1、五种基本形态:空、一个结点、一个结点+左子树、一个结点+右子树、一个结点+左子树+右子树。2、二叉树的子树有左右顺序之分。3、特殊二叉树:斜二叉树、完美二叉树(满二叉树)、完全二叉树二叉树的几个重要性质1、一个二叉树第i层的最大结点树为:2^(k...原创 2019-03-19 14:45:02 · 5141 阅读 · 2 评论 -
浙大数据结构——2.3队列
什么是队列具有一定操作约束的线性表。队列的抽象数据类型描述类型名称:队列数据对象集:一个有0个或多个元素的有穷线性表。操作集:生成空队列、判断队列是否已满、将数据元素插入队列、判断队列是否为空、删除队头元素并返回。队列的顺序存储实现1、结构体#define MaxSize <存储数据元素的最大个数>typedef struct QNode *Queu...原创 2019-03-14 22:59:12 · 235 阅读 · 0 评论 -
浙大数据结构——2.2堆栈
什么是堆栈具有一定操作约束的线性表。表达式求值,就是堆栈的应用。后缀表达式平常生活中所用的是中缀表达式。而计算机需要使用后缀表达式。堆栈的抽象数据类型描述类型名称:堆栈数据对象集:一个有0个或多个元素的有穷线性表。操作集:生成空堆栈、判断堆栈是否已满、将元素item压入堆栈、判断堆栈是否为空、删除并返回栈顶元素。堆栈的顺序存储实现1、结构体#define ...原创 2019-03-14 21:22:52 · 244 阅读 · 0 评论 -
浙大数据结构——2.1线性表及其实现
多项式的表示eg1:一元多项式及其运算方法一:顺序存储结构直接表示。使用数组下标表示指数,对应值表示系数。弊端:不适合非零项多、指数大的多项式。方法二:顺序存储结构表示非零项。使用二维数组存储指数和系数。弊端:不适合多项式的运算。方法三:链表存储非零项。什么是线性表由同类型数据元素,构成有序序列的线性结构。线性表的抽象数据类型描述:类型名称:线性表(List)...原创 2019-03-14 14:12:57 · 353 阅读 · 0 评论 -
浙大数据结构——5.1堆
什么是堆优先队列:特殊的“队列”,取出元素的顺序是按照元素的优先级大小,而不是进入队列的先后顺序。优先队列可以用数组、链表、有序数组、有序链表实现,也可以用完全二叉树表示。其中,完全二叉数的每个结点都比其子树的数值大。如下图所示:堆的抽象数据类型描述类型名称:最大堆数据对象集:完全二叉树,每个结点的元素值不小于其子结点的元素值。操作集:创建一个空的最大堆、...原创 2019-04-18 23:35:39 · 192 阅读 · 0 评论 -
数据结构-满m叉树中编号为i的结点的双亲结点(若存在)的编号是多少
原创 2019-09-06 13:57:11 · 8174 阅读 · 2 评论 -
struct与typedef struct的简单区分
第一种struct{ int x=1;}test1,test2;test1 test2 是结构体的变量,不用声明,因此可以直接打印 test1.x,test2.xstruct{ int x=1;}test1,test2; int main(){ printf("%d %d",test1.x,test2.x); return 0;}//打...原创 2019-06-05 20:41:07 · 225 阅读 · 0 评论 -
浙大数据结构——5.3集合及运算
集合的表示采用数组存储形式typedef struct{ ElementType Data; int Parent;}SetType;集合运算1、查找某元素所在的集合int Find(SetType S[],ElementType X){ int i; for(i=0;i<MaxSize && S[i].Data != X; i++); i...原创 2019-05-15 00:10:41 · 226 阅读 · 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是子列左端位置 */ for( j = i; j < N; j++ ) { /* j是子...原创 2019-03-08 15:17:41 · 1045 阅读 · 0 评论