数据结构和算法基础知识
文章平均质量分 58
琉璃百般枯
这个作者很懒,什么都没留下…
展开
-
(五)数据结构中的树(下):堆
问题优先队列:取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。方案数组:插入——总是在数组尾部插入,时间复杂性为 删除——查找最大(小)关键字,从数组中删去元素,时间复杂性为。并移动元素位置,时间复杂性为链表:插入——总是插入链表的头部,时间复杂性为 删除——查找最大(小)关键字,时间复杂性为。删除结点...原创 2019-03-18 17:29:39 · 94 阅读 · 0 评论 -
什么是算法(Algorithm)?(应用实例:最大子列和问题)
解决问题方法的效率与算法的巧妙程度有关,描述算法的时候我们主要关心解决问题所采用的思想,而不是具体实现细节。什么是好的算法?有两个指标:空间复杂度S(n)(根据算法写成的程序在执行时占用存储单元的长度)和时间复杂度T(n)(根据算法写成的程序在执行时耗费时间的长度)。1.1 算法算法的五个基本特征:输入、输出、有穷性、确定性(每一条指令充分明确)、可行性复杂度的渐进表示法(上...原创 2018-11-23 22:00:22 · 546 阅读 · 0 评论 -
(一)线性结构:线性表及其基本操作(数组和链表)的实现
多项式的线性表可以用数组实现,也可以用链表实现。用数组实现有两种方法,一种是顺序存储结构直接表示,另一顺序存储结构表示非零项。用链表实现链表中的每个结点存储多项式中的一个非零项,包括系数个指数两个数据域以及一个指针域。线性表的抽象数据类型描述类型名称:线性表(List)数据对象集:线性表是个元素构成的有序序列操作集:线性表,整数表示位置,元素线性表基本操作主要有(数...原创 2018-11-26 20:26:20 · 1887 阅读 · 0 评论 -
(二)线性结构:堆栈实现线性表的基本操作
堆栈的用途:函数调用、递归、回溯算法、表达式求值例1:计算机如何进行表达式求值?对算术表达式(中缀表达式)(等价于后缀表达式),正确理解: 例2:求后缀表达式?从左往右扫描,先记数,再看其后的运算符,找对应放入数。由两类对象构成:运算数和运算符号(不同运算符号优先级不一样)结论:需要有种存储方法,能顺序的存储运算数,并在需...原创 2018-11-27 20:47:36 · 350 阅读 · 0 评论 -
(三)线性结构:队列及实现
队列定义:具有一定操作约束的线性表。其插入和删除操作只能分别从一端进行。先进先出FIFO。队列抽象数据类型描述类型名称:队列(Queue)数据对象集:一个有0个或多个元素的又穷线性表操作集:长度MaxSize的队列,队列元素Queue CreateQueue(int MaxSize):创建一个长度为MaxSize的空队列 int IsFullQ(Queue Q,int...原创 2018-11-28 15:28:16 · 202 阅读 · 1 评论 -
(四)线性结构练习:多项式的加法和乘法运算
多项式的加法运算多项式相加:相同指数的系数项相加,其余部分进行拷贝。法一:采用不带头结点的单项链表,按照指数递减的顺序排列各项链表的定义:#include <stdio.h>#include <stdlib.h>struct PolyNode{ int coef; //多项式系数 int expon; //多项式指...原创 2018-11-28 20:44:46 · 270 阅读 · 0 评论 -
(一)数据结构中的树(上):树与树的表示
什么是树?客观世界中许多事物存在的层次关系:人类社会家谱、社会组织结构、图书信息管理等。层次组织在管理上更高效。定义:个结点构成的有限集合。当 时,称为空树。性质(对于任何一个非空树):注意:子树是不相交的、出了根节点外,每个结点有且仅有一个父节点、一个N个结点的树有N-1条边树中有一个称为“根”的特殊结点,用表示 其余结点可分为个互不相交的有限集,其中每个集合本...原创 2018-12-04 11:12:13 · 181 阅读 · 0 评论 -
(二)数据结构中的树(上):二叉树存储结构及遍历
二叉树的定义:一个度为2的树,由根结点、左子树和右子树组成的。(子树有左右区分)二叉树形态:空、只有一个结点、一个结点和左子树、一个结点和右子树、一个结点和左右子树、斜二叉树、完美二叉树(满二叉树)、完全二叉树(从上往下,从左往右按顺序编号,可缺省最后最右右边部分) 二叉树的性质:一个二叉树第层的最大结点数为:, 深度为的二...原创 2018-12-05 21:41:52 · 169 阅读 · 0 评论 -
(三)数据结构中的树(中):二叉搜索树
二叉搜索树定义:根节点大于左叶结点小于右叶结点,右结点值大于左结点值,左右子树都是二叉搜索树搜索二叉树的插入:#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct TNode *Tree;typedef Tree BinTree;//定义一...原创 2018-12-08 16:16:44 · 178 阅读 · 0 评论 -
(四)数据结构中的树(中):平衡二叉树
定义“平衡因子”(Balance Factor,BF):,即左子树的高度减去右子树的高度定义“平衡二叉树”:空树,或者任意结点左右子树的高度差的绝对值不超过1的树,如:斐波那契数列 1 1 2 3 5 8 13 21 34 ....高度 0 1 2 3 4 5 6平衡二叉树最小结点数为: ...原创 2018-12-12 21:39:47 · 157 阅读 · 0 评论 -
数据结构的基本概念
程序设计=数据结构+算法什么是数据结构?数据对象在计算机中的组织方式(数据元素之间存在的一种或多种特定关系的集合),数据对象一定与加在其上的操作有关系,相关联,而完成这种操作所用的方法就是算法。解决问题方法的效率跟数据的组织方式、空间利用效率有关、算法巧妙程度有关。数据结构分为逻辑结构(集合结构、线性结构、树形结构、图形结构)和物理结构(从存储形式上分为顺序存储和链式指针存储)。...原创 2018-10-30 21:06:53 · 211 阅读 · 0 评论