![](https://img-blog.csdnimg.cn/20201204105359571.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
2.数据结构
知识点,个人理解
叶子桑桑
长久身自缄默
展开
-
14.栈的操作
栈的基本操作栈的存储方式由于栈本身就是线性表,于是栈也有顺序栈和链栈两种实现方式栈的顺序存储——顺序栈栈的链式存储——链栈栈的顺序表示存储方式:同一般的线性表的顺序存储结构完全相同,利用(数组)一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,栈底一般在低地址端附设top指针,指示栈顶元素在顺序栈的位置另设base指针,指示栈底元素在顺序栈的位置但是为了方便操作通常top指针指向栈顶元素之上的下标地址指向线性表中的an+1另外用stacksize表示栈可使用的最大容量(栈最原创 2020-12-05 21:27:27 · 772 阅读 · 0 评论 -
13.栈和队列
栈和队列是两种重要的线性结构。栈和队列是限定插入和删除只能在表的“端点”进行的线性表。栈–后进先出由于栈的操作具有后进先出的固有特性,使栈成为程序设计中有用的工具。另外 ,如果问题求解过程中具有“后进先出”的天然特性则求解的算法中必须利用“栈”数制转换 表达式求值 括号匹配的检验 八皇后问题 行编辑程序 函数调用 迷宫求解 递归调用的实现栈(stack)是限定仅在表尾进行插入或删除操作的线性表。又称后进先出(Last In First Out的线性表简称FIFO结构表尾an端为栈顶Top 表原创 2020-12-05 21:27:14 · 197 阅读 · 0 评论 -
12.线性表的合并详解
线性表的合并问题描述:假设利用两个线性表La和Lb分别表示两个集合A,B,现要求一个新的集合A=A∪BLa=(7,5,3,11)Lb=(2,6,3)A=(7,5,3,11,2,6)算法步骤:(A既是参数又是操作的结果)依次(需要循环)取出Lb中的每个元素在La中查找该元素如果没有插入到La表尾这里的算法是通用的与La Lb的具体存储方式无关(不关心他们是用顺序表还是链表)算法复杂度是两线性表表长的乘积有序表的合并问题描述:已知线性表La和Lb中的数据元素按值非递减有序排列,现要求原创 2020-12-05 21:26:56 · 6267 阅读 · 0 评论 -
11.循环链表,双向链表
循环链表循环链表是头尾相接的链表(即表中最后一个结点的指针域指向头结点,整个链表形成一个环)(circular linked list)优点:从表中任一结点出发均可访问全部结点循环链表与单链表的主要差异当链表遍历时,判别当前指针p是否指向表尾结点的终止条件不同。在单链表中,判别条件为p!=NULL或p->next!=NULL,而循环单链表的判别条件为p!=L或p->next!=L。算法的复杂度O(1)(常数阶)双向链表为了克服单链表的这一缺点,老科学家们设计了双向链表原创 2020-12-05 21:26:29 · 567 阅读 · 1 评论 -
10.单链表的建立:头插法,尾插法
头插法(前插法)建立单链表创建单链表的过程就是动态生成链表的过程,即从空表的初始状态起依次建立各元素结点,并逐个插入链表。【算法2.11】采用的是插队的办法新生成的结点在头结点之后在第一的位置时间复杂度O(n)尾插法建立单链表...原创 2020-12-04 16:04:31 · 2017 阅读 · 0 评论 -
9.单链表操作
销毁单链表[补充算法]清空单链表链表仍然存在将其置空(头结点和头指针仍然存在)[补充算法]求表长[算法思路]从首元结点开始依次计数直至最后一个元素总结:常用操作指向头结点 p=L;指向首元结点p=L->next;i=1;指向下一结点p=p->next;[算法步骤]①用指针p指向首元结点,用j做计数器初值赋为1。②从首元结点开始依次顺着链域next向下访问,只要指向当前结点的指针p不为空(NULL), 并且没有到达序号为i的结点,则循环执行以下操作:.原创 2020-12-04 16:02:24 · 290 阅读 · 1 评论 -
8.初始单链表
用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的,甚至是零散的分布在内存的任意位置,链表中元素的逻辑次序与物理次序不一定相同)那怎么表示数据元素之间的逻辑关系呢?在存储自己内容的同时也存储下一个元素的地址。存储数据元素的域称为数据域,存储直接后继位置的域称为指针域。指针域中存储的信息称作指针或链。这两部分信息组成ai的存储映象称为结点(Node)。n个结点(ai(1≤i≤n)的存储映象链结成一个链表,即为线性表。把链表中第1个结点的存储位置叫头指针。最后一个元素意味原创 2020-12-04 16:00:50 · 201 阅读 · 0 评论 -
7.线性表的初始化,销毁,置空,判断是否为空,插入和查找算法,优缺点
初始化(分配空间;赋初值)销毁线性表线性表置空/清空线性表求表长判断线性表是否为空线性表的按值查找算法查找算法的算法分析查找算法的基本操作:将记录的关键字同给定值进行比较(L.elem==e)比较的次数与输入的定值e有关(假设7个数字出现的概率均为1/7)当e=a,1次;当e=b,2次;当e=c,3次;…e=g,7次平均比较次数(1+2+3+…+7)/7=4在查找时,为确定元素在顺序表中的位置,需和给定值进行比较的数据元素个数的期望值称为查找算法在查找成功时的平均查原创 2020-12-04 15:01:03 · 5189 阅读 · 0 评论 -
6.线性表的顺序实现
线性表的存储结构在计算机中线性表有两种存储结构分别是顺序存储结构和链式存储结构。线性表的顺序表示(又称顺序存储结构或顺序映象)顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。线性表的顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素。例如:线性表(1,2,3,4,5,6)线性表的第1个数据元素a1的存储位置称为线性表的起始位置或基地址.顺序存储结构的寻址公式计算地址只算一次与处理数据的规模无关数量级是O(1)这种运算叫随机存取。原创 2020-12-04 14:50:10 · 178 阅读 · 0 评论 -
5.初识线性表
线性表,从名字上你就能感觉到,是具有像线一样的性质,像刚才提到的那样,一个班级的小朋友,一个跟着一个排着队,有一个打头,有一个收尾,当中的小朋友每一个都知道他前面一个是谁,他后面一个是谁,这样如同有一根线把他们串联起来了。就可以称之为线性表定义由n(n≥O)个数据特性相同的元素构成的有限序列称为线性表。线性表的特点线性表中元素的个数n(n≥O)定义为线性表的长度,n=O时称为空表。将非空的线性表(n>O)记作(a1,a2,a3,…,an)这里的数据元素ai(1≤i≤n).原创 2020-12-04 14:17:08 · 220 阅读 · 0 评论 -
4.渐进时间复杂度
分析算法时间复杂度的基本方法1.找出语句频度最大的那条语句作为基本语句;2.计算基本语句的频度,得到问题规模n的某一个函数;3.取其数量级用O表示忽略所有低次幂项和最高次幂的系数,这样可以简化算法分析,也体现出了增长率的含义。常数阶实际上,如果算法的执行时间不随问题规模n的增加而增长,算法中语句频度就是某个常数。即使这个常数再大,算法的时间复杂度都是O(1)。线性阶给小灰一个长度为10cm的面包,小灰每三分钟吃掉1cm,那么他吃掉整个面包要多久?答案自然是3*10=30min原创 2020-12-04 13:59:16 · 2436 阅读 · 0 评论 -
3.算法的定义,描述,特性,设计要求,分析和程序
定义解决问题的方法和步骤在计算机中表现为指令的有限序列。其中每条指令表示一个或多个操作。算法的描述自然语言;流程图【NS图、框图】;伪代码(类C语言);程序设计(C、Java…)类C语言介于伪码语言和程序设计语言之间的一种表示形式,保留了C语言的精华,不拘泥于C语言的语法细节,同时也添加了一些C++的成分。程序与算法程序=数据结构+算法数据结构通过算法来实现操作算法根据数据结构设计程序算法的特性(确定、有穷、可行、输入、输出)1.有穷性:算法在执行有限步骤之后,自原创 2020-12-04 13:39:30 · 1420 阅读 · 0 评论 -
2.数据结构的基本术语&数据类型_C语言版
文章目录1.基本概念和术语1.数据(Data)2.数据元素(DataElement)3.数据项(Data Item)4.数据对象(DataObject)那数据结构中的结构又是什么呢?逻辑结构和物理结构逻辑结构物理结构/存储结构2.数据类型1.C语言中的数据类型1. 原子类型2.抽象数据类型3.小结1.基本概念和术语1.数据(Data)是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称(集合)。是信息的载体;是对客观事物的符号化表示;可以被计算机识别、存储和加工。数据不仅仅包含原创 2020-12-04 10:43:37 · 690 阅读 · 0 评论 -
1.数据结构绪论_C语言版
程序原创 2020-12-04 09:34:46 · 241 阅读 · 0 评论