期末了,赶紧复习一波,手打一份书上的代码以便随时查阅 第二章: //顺序表存储结构 #define MAXSIZE 100 typedef struct { Elemtype *elemt; int length; }Sqlist; Status InitList(Sqlist &L) { L.elemt=new Elemtype[MAXSIZE]; if(!L.elemt) exit(OVERFLOW); // L.length=MAXQSIZE; L.length=0; return OK;…
<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑  链接☛☛☛ <数据结构>课本源码合辑 习题集全解析  链接☛☛☛ <数据结构题集>习题解析合辑 ★教材及习题源码下载★ 链接☛☛☛  严蔚敏<数据结构>课本与习题源码(GitHub仓库) 博主有话说: 01.自学编程,难免思路阻塞,故我在本博客陆续更新了严蔚敏,吴伟民版<数据结构-C语言版>各章节的课本源码和配套习题集答案解析,目的是为了…
数据结构(C语言)—排序 排序 排序是按关键字的非递增或递减顺序对一组记录中心进行排序的操作.(将一组杂乱无章的数据按一定规律顺次排列起来.) 未定列表与不稳定列表 假设 Ki = Kj ( 1 ≤ i ≤ n,1 ≤ j ≤ n,i ≠ j ),在序列前尚未序列中 Ri 领先于 Rj(即  i < j ).若在排序前后的绿鬣中 Ri 仍大于 Rj ,则称所有的排序方法为稳定的,反之为不稳定. 内部排序 待排序记录全部存放在计算机的内存中进行排序的过程. 外部排序 待排序记录数量很大,以至于内存…
YAML语言教程与使用案例,如何编与读懂写YAML文件. YAML概要 YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写.在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言). YAML是一个类似 XML.JSON 的标记性语言.YAML 强调以数据为中心,并不是以标识语言为重点.因而 YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”. 基本语法…
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <malloc.h> typedef char InfoType;#define MAX_Info 80 // 信息字符串最大长度+1 #define MAX_VERTEX_NAME 5  // 顶点字符串最大长度+1 typedef char  VertexType[MAX_V…
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./*  数据结构C语言版 表插入排序  算法10.3 P267-P270  编译环境:Dev-C++ 4.9.9.2*/ #include <stdio.h>#include <limits.h> // 静态链表类型 #define SIZE 100 // 静态链表容量 typedef int KeyType; // 定义关键字类型为整型 typedef int …
/* 数据结构C语言版 弗洛伊德算法  P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> #define MAX_NAME 5   // 顶点字符串的最大长度+1#define MAX_INFO 20   // 相关信息字符串的最大长度+1typedef int VRType;   // 顶点关系的数据类型#define INFINITY INT_MAX // 用整型最大值代替∞#define MA…
目录 1. Python预备基础 2. Python数据类型 3. Python条件语句 4. while循环和for循环 1. Python预备基础 1.1 变量的命名   变量命名规则主要有以下几条: 变量名只能包含字母.数字和下划线,其中下划线和字母可以开头,数字不行,即info_1可以,而1_info不行: 变量名内不能包含空格,可以用下划线替代,即info_1,而非info 1: 不能与Python内置关键字和函数名重名,这条在很多语言中都是一致的: 变量名中要言简意赅,即可以用nam…
百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道小题,激发读者的求知欲,培养自学能力和独立思考习惯.主教材和习题解析共计配有340多组.400余幅插图结合简练的叙述,40多张表格列举简明的规范.过程及要点,280余段代码及算法配合详尽而简洁的注释,使深奥抽象的概念和过程得以具体化且便于理解和记忆:推荐20余册经典的专著与教材,提供40余篇重点的学术论文,便…
图的存储结构大赏------数据结构C语言(图) 本次所讲的是常有的四种结构: 邻接矩阵 邻接表 十字链表 邻接多重表 邻接矩阵 概念 两个数组,一个表示顶点的信息,一个用来表示关联的关系. 如果是无权图,那么1代表有关系,0代表没有关系. 如果是有权图(网)那么用INT_MAX代表没有关系,使用具体的值来代表有关系. 说明 在这里,由于邻接矩阵很好实现,我试着增加难度,使用稀疏矩阵存储无向图. 完整实现: //注意:所有数组从 0 开始 #include <stdio.h> #include…
//二叉树的顺序存储表示 #define MAXTSIZE 100 typedef TElemtype SqBiTree[MAXTSIZE]; SqBiTree bt; //二叉树的二叉链表存储表示 typedef struct BiTNode { TElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //中序遍历的递归算法 void InorderTraverse(BiTree T) { if(T) { InOrde…
---恢复内容开始--- 1> 编程:需求分析.设计.编写程序(编码.编辑.链接.运行).调试程序 2> 指数形式:e的左边是数值部分(有效数字),不能省略,但可以表示成 .e-4:等等:e的右边是整数部分,必须是整数形式 3> 实型常量有单精度.双精度和长双精度之分,但无 有符号和无符号之分 4> 关键字又称保留字 5> 变量名的命名规则:1)标识符只能由英文字母.数字和下划线组成: 2)标识符必须以字母或下划线开头: 3)不允许使用C关键字为标识符命名: 4)标识符可以包…
树的概览 树是层级式的集合 树中最顶端的节点叫做根 个或多个后继(子节点). 没有子节点的节点叫做叶子节点 拥有子节点的节点叫做内部节点 ,其子节点位于层级1,依次类推.一个空树的层级为 -1 树的术语 术语概览 示列 普通的树和二叉树 二叉树中,每个节点最多只有两个子节点,分别称为左子节点和右子节点 树的递归定义 普通的树 要么为空,要么包含一个有限的节点的集合 T.有一个和所有其他节点不同的节点r,称为根.此外,集合 T - {r}可以被划分为不相边的子集.每个子集都是一个普通的树. 二叉树…
这篇博客介绍的表达式求值是用C语言实现的,只使用了c++里面的引用. 数据结构课本上的一个例题,但是看起来很简单,实现却遇到了很多问题. 这个题需要构建两个栈,一个用来存储运算符OPTR, 一个用来存储数字OPND. 但是,数字和运算符都定义成字符型栈吗? 出现了问题,当运算结果或中间结果为负时,没有办法存储.而且只能运算0~9之间的数字结果也只能是0~9之间. 那就运算符栈为字符栈, 数字栈为数值型栈,在存储时将表达式中的字符转化成数值进行存储. 但是,如果我们不用c++里面的stack进行栈…
上一次我们从什么是表一直讲到了链表该怎么实现的想法上:http://www.cnblogs.com/mm93/p/6574912.html 而这一次我们就要实现所说的承诺,即实现链表应有的操作(至于游标数组--我决定还是给它单独写个博文比较好~). 那么,我们的过程应该是怎么样的呢?首先当然是分析需要什么操作,然后再逐一思考该如何实现,最后再以代码的形式写出来. 不难发现,我们希望链表能支持的(基础,可以由此延伸)操作就是: 1.给出第n个元素 2.在第n个元素的后面插入一个元素(包含在最后一个…
在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下: //SIZE用于多个场合,如栈的大小.表达式数组的大小 #define SIZE 1000 //表达式的单个元素所使用的结构体 typedef struct elem { ; //若元素存储操作数则num为该操作数 char oper = '='; //若元素存储操作符则oper为该操作符 bool IsNum = false; //用于判断元素是否为操作数…
我学数据结构的时候也是感觉很困难,当我学完后我发现了之所以困难时因为我没有系统的进行学习,而且很多教授都只是注重数据结构思想,而忽略了代码方面,为此我写了这些博文给那些试图自学数据结构的朋友,希望你们少走弯路 我尝试用最简单的语言与代码来描述链表,事实上它本身也很简单 静态单链表实现 下面一部分的讨论都将围绕上面这幅图片展开,既然是逐步实现,我不考虑在开头就让这个单链表完美实现,它将只有两个部分:链表的创建&遍历链表输出 首先我们要知道一些简单的概念,一个链表是由节点构成,而每个节点又是又一个数…
有始有终,所以我准备把各种数据结构都讲一次,栈也分顺序存储和链式储存,这里我们选择链式存储来讲,顺序存储没有难度(链式其实也是) 作为数据结构中最简单的栈,这里不会说太多,首先考虑一下下面的model: 这就是一个栈,相信你或多或少也了解一些栈的知识,当然如果不了解或者不知道你涉及过那还是继续看吧 栈数据结构是后进先出(Last  In First Out,简称LIFO),何谓后进先出?你可以把栈视作一个有下底的盒子,然后你把各种书放进去,如果你想拿书,你拿到的第一步一定是你最后放进去的,这就是…
数据结构 概念:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 算法复杂度 时间复杂度 时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率.算法分析的目的在于选择合适算法和改进算法. 计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间.这是一个关于代表算法输入值的字符串的长度的函数.时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数.使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值…
先看思维导图: *思维导图有点简陋,本着循循渐进的思想,这小节的知识大多只做了解即可. *重点在于算法的代价及度量!!!查找资料务必弄清楚. 零.四个基本概念 问题:一个具体的需求 问题实例:针对问题(需求)的具体的例子 算法:解决问题的过程,是对一个计算过程的严格描述 程序:程序可以看作是采用计算装置能够处理的语言描述的算法 一.算法的5大性质 有穷性(算法描述的又穷性):算法必须用有限长的描述说清楚 能行性:算法的每一步都是可行的,也就是说,每一步都能通过执行有限次数完成 确定性:别人看了过…
[1] 严格意义上数据结构的概念 数据结构,一个简单的定义:相互之间存在一种或多种特定关系的数据元素的集合.即:数据结构 = 元素集合 + 元素间关系的集合 . 在讨论数据结构时,可以基于两个不同的层次:1.逻辑层次  2.存储层次 ( 很多专业书中也写为:逻辑结构.存储结构.但为了避免概念间的混淆,我认为 “层次” 这一表述方式更贴切 ) .逻辑层次,是指对描述对象的单纯的数学抽象.例如:一个科研小组由1名导师.2名研究生和6名本科生构成,导师指导2名研究生,每个研究生分别指导3名本科生.将这…
接口 接口是软件资源用户可用的一组操作 接口中的内容是函数头和方法头,以及它们的文档 设计良好的软件系统会将接口与其实现分隔开来 多态 多态是在两个或多个类的实现中使用相同的运算符号.函数名或方法.多态函数的示例是 str 和 len.多态运算符是 + 和 ==.多态方法的示例是 add 和 isEmpty. 将接口与实现隔开的好处 降低了用户的学习难度 允许用户以即插即用的方式,快速的将资源整合起来 让用户有机会在相同资源的不同实现中做出选择 允许用户对资源的实现做出修改,而不影响用户代码 开…
栈和队列是两种重要的线性结构.从数据结构角度看,栈和队列也是线性表,但它们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型. 栈的定义 栈(Stack) 是限定仅在表尾进行插入或删除操作的线性表.因此,对栈来说,表尾端称为栈顶(top),表头端称为栈底(bottom).不含元素的空表称为空栈. 栈为后进先出的线性表,简称LIFO结构. 栈的表示和实现 和线性表类似,栈也有两种存储表示方法:顺序栈和链栈. 顺序栈,即栈的顺序存储结…
本书是Ford和Topp两位教授于1996看出版的名著Data Structures with C++的第2版,在全球范围内已经有数以万计的学生从中受益.作者将C++语言作为算法描述语言,应用包含规范化的数据结构的标准模板库,集中讲述了数组.向量.表.关联树容器,以及集合.映射.堆.哈希表和图等数据结构及其算法,重点讨论了如何高效地存储大型数据集合,涵盖了数据库结构初级和高级教程撮新内容.书中各章章前提出学习目标,章后附有丰富的练习题.答案以及书面练习和上机编程练习,指导读者迅速.全面地掌握核心…
本篇文章是为了记录自己在学习数据结构时的笔记,会对常见的数据结构做基本的介绍以及使用Java语言进行实现.包括 动态数组 栈 队列 链表 二分搜索树 优先队列和堆 线段树 Trie树 并查集 AVL树 红黑树 哈希表 动态数组 API介绍 数组是一种根据下标操作的数据结构,它的查询速度很快,但是它有缺点,那就是数组的容量一旦在创建时确定,就不能进行更改,所以为了克服这一缺点,我们实现一个自己的数组,并除此以外,还会实现一些方法,包括以下 add(int index, E e) 向指定index添…
第一章 概述 1.0 序言 自己为啥要学数据结构嘞,我觉得主要有以下三个原因: 前段时间在看并发编程时,发现aqs,corrunthashmap等底层都用到了数据结构,主要的有队列,还有链表,学习数据结构有助于你更好的去看懂源码. 学习数据结构让你在编写代码时,在脑海中有一个更好的轮廓,知道自己要用什么来存储.处理数据,效率更高. 主要是最近面了一个公司,自己Java基础.多线程.redis.mq.分布式框架等都回答的可以,后面又加了一轮算法机试,因为不是科班,自己这块太薄弱了,难过呀铁子,决定…
任何一个算法的设计取决于选定的数据结构,而算法的实现依赖于采用的存储结构. 之前线性表的数据元素都是非结构的原子类型,元素的值是不可再分的.下面学习的这两个线性表是很特殊的,其中数据元素本身也可能是一种数据结构. 认识数组和广义表 数组可以看成是一种特殊的线性表,也就是线性表中的数据元素本身也是一个线性表,数组中的个元素具有统一的类型.其实说白了就是在脑海中想数组中的数据如何在内存中以什么形式的线性表来存储.在C语言中,一个二维数组可以定义为其分量类型为一维数组类型的一维数组类型. 数组一旦被建…