一.数据结构是什么 如何把现实中大量而复杂的问题,以特定的数据类型和特定的数据存储结构保存到计算机的存储器中. 数据存储包括两方面:个体存储的集合.个体与个体之间的关系的存储 程序 = 算法 + 数据结构  -->  针对实际问题选择一个好的数据结构,设计一个好的算法 二.数据结构中各名词解释 数据:表示客观事物的符号,比如98(不同语义下可能是成绩,也可能是体重),数据还包括音乐,图像,视屏等. 数据项:组成数据的基本单位 结点: 三.数据结构的两大分类 线性存储 连续存储 散列存储(链式存储…
指针 何为指针?来个官方定义:指针是一个值为内存地址的变量(或数据对象). 一.指针的声明 //示例 int *pi; //pi是指向int类型变量的指针 char *pc; // pi是指向char类型变量的指针 float *pf; // pi是指向float类型变量的指针 注意,指针的值虽然是地址,指针本身也是有自己的地址和大小的.在计算机中,指针的大小为8字节,在stm32中,为4字节. 二.指针的赋值与解引用 ; int *p; p=# printf("%d"…
一.简述 栈与队列,DFS与BFS.仅以连接表为例实现. 二.头文件 BFS要用到的头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-9 2016-6-25修改版,针对第七章 note:realize my textbook <<数据结构(C语言版)>> */ //Page 64 #include <cstdio> #include "head.h&qu…
一.简述 二叉树的遍历主要是先序.中序.后序及对应的递归和非递归算法,共3x2=6种,其中后序非递归在实现上稍复杂一些.二叉树的遍历是理解和学习递归及体会栈的工作原理的绝佳工具! 此外,非递归所用的栈及相关操作是第三章实现的,但数据类型做了更改. 二.头文件 //3_1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-7 note:realize my textbook <<数据结构(C语言版)>> */…
一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-9 note:realize my textbook <<数据结构(C语言版)>> */ //Page 64 #include <cstdio> #inclu…
一.简介 FIFO. 二.头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-9 note:realize my textbook <<数据结构(C语言版)>> */ //Page 61 #include <cstdio> #include "head.h" #define QElemType int //----单链队列:队列的链式存储结构--…
一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚,所以很多需要自己揣摩.这也体现了算法和程序设计语言的特点,算法更侧重本质的描述,而任何编程语言都要照顾到实现的细节以及数据类型等语法方面的需求. 表达式求值: 由于数据的读入是按照字符读入的,所以这个简单的小程序只能计算个位数的运算. 二.头文件 迷宫求解: //3_2_maze.h /** aut…
一.简述 栈,LIFO.是操作受限的线性表,和线性表一样有两种存储表示方法.下面以顺序存储为例,实现. 二.ADT 暂无. 三.头文件 //3_1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-7 note:realize my textbook <<数据结构(C语言版)>> */ //Page 46 #ifndef _3_1_H_ #define _3_1_H_ #include <cstdio…
一.简述 利用链表表示稀疏多项式,并基于之前的一些操作(编程实现上还是有所不同的)组合新的操作实现一元多项式的表示及相加. 二.ADT 抽象数据类型一元多项式的定义 ADT Polyomail{ 数据对象:D = {a[i]|a[i]属于TermSet, i = ,,...,m,m>= TermSet中每个元素包含一个表示系数的实数和表示指数的整数} 数据关系 基本操作: CreatPolyn(&P, m) 操作结果:输入 m 项的系数和指数,建立一元多项式 P DestroyPolyn(&…
一.简述 ...由于链表在空间的合理利用上和插入.删除时不需要移动等的优点,因此在很多场合下,它是线性表的首选存储结构.然而,它也存在着实现某些基本操作,如求线性表的长度时不如顺序存储结构的缺点:另一方面,由于在链表中,结点之间的关系用指针来表示,则数据元素在线性表中的“位序”的概念已经淡化,而被数据元素在线性链表中的“位置”所代替.为此,从实际应用的角度重新定义线性链表及其基本操作.....(Page37) 此外,书上一些地方我认为存在错误,所以写代码时做了修改和注释.并且,由于一些基本操作书…