数据结构
数据结构学习笔记及代码实现
wyatt007
这个作者很懒,什么都没留下…
展开
-
【数据结构(青岛大学 王卓)】第3章 栈和队列 学习笔记(一)3.1 栈和队列的定义和特点1、3.1 栈和队列的定义和特点2、3.1 栈和队列的定义和特点3
3.1 栈和队列的定义和特点11、普通线性表的插入和删除操作2、栈和队列的定义和特点栈和队列是两种常用的、重要的数据结构。栈和队列是限定插入和删除只能在表的“端点”进行的线性表。栈和队列是线性表的子集(是插入和删除位置受限的线性表)。线性表 栈 队列 Insert(L, i, x) 1 <= i <= n + 1 Insert(S, n + 1, x) Insert(Q, n + 1, x) Dele原创 2020-08-30 16:39:03 · 618 阅读 · 3 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(十六)2.8 案例分析与实现1、2.8 案例分析与实现2、2.8 案例分析与实现3
目录2.8 案例分析与实现11、案例2.12.8 案例分析与实现21、案例2.2(1)多项式非零项的数组表示(2)稀疏多项式的运算(3)数组C多大合适呢?(4)多项式创建(5)多项式相加2.8 案例分析与实现31、案例2.32.8 案例分析与实现11、案例2.1【案例2.1】一元多项式的运算:实现两个多项式加、减、乘运算。→线性表(每一项的指数i隐含在其系数的序号中)。例如:,用数组来表示:指数(下标i) 0 1 2原创 2020-07-26 13:39:21 · 465 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(十五)2.7 线性表的应用1、2.7 线性表的应用2、2.7 线性表的应用3
目录2.7 线性表的应用11、线性表的合并2.7 线性表的应用21、有序表的合并2.7 线性表的应用31、有序表的合并2.7 线性表的应用11、线性表的合并问题描述:假设利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合。算法步骤:依次取出Lb中的每个元素,执行以下操作:①在La中查找该元素。②如果找不到,则将其插入到La的最后。【算法2.15】线性表的合并。//线性表的合并void union(List &La,原创 2020-07-23 21:10:57 · 230 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(十四)2.5 线性表的链式表示和实现17、2.5 线性表的链式表示和实现18、2.5 线性表的链式表示和实现19、2.6 顺序表和链表的比较
目录2.5 线性表的链式表示和实现171、双向链表的插入2.5 线性表的链式表示和实现181、双向链表的删除2.5 线性表的链式表示和实现191、单链表、循环链表和双向链表的时间效率比较2.6 顺序表和链表的比较1、链式存储结构的优缺点(1)链式存储结构的优点(2)链式存储结构的缺点2、存储密度3、顺序表和链表的比较2.5 线性表的链式表示和实现171、双向链表的插入【算法2.13】双向链表的插入。①s->prior = p->原创 2020-07-19 15:39:11 · 230 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(十三)2.5 线性表的链式表示和实现14、2.5 线性表的链式表示和实现15、2.5 线性表的链式表示和实现16
2.5 线性表的链式表示和实现141、循环链表循环链表:是一种头尾相接的链表(即:表中最后一个结点的指针域指向头结点,整个链表形成一个环)。优点:从表中任一结点出发均可找到表中其他结点。备注:由于循环链表中没有NULL指针,故涉及遍历操作时,其终止条件就不再像非循环链表那样判断p或p->next是否为空,而是判断它们是否等于头指针。循环条件:2、循环链表表示(1)头指针表示单循环链表找的时间复杂度:;找的时间复杂度:。不方便。备注:表的操作常常是在表的首原创 2020-07-16 21:39:08 · 254 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(十二)2.5 线性表的链式表示和实现12、2.5 线性表的链式表示和实现13
2.5 线性表的链式表示和实现121、知识回顾单链表的基本操作:①单链表的销毁。②清空单链表。③求单链表的表长。④判断链表是否为空。⑤取值:取单链表中第i个元素的内容。⑥查找:按值查找:根据指定数据获取数据所在的位置(该数据的地址)。按值查找:根据指定数据获取数据所在的位置序号(是第几个数据元素)。⑦插入:在第i个结点前插入新结点。⑧删除:删除第i个结点。⑨单链表的建立:头插法和尾插法。2、单链表基本操作的实现(1)头插法【算法2.11】建立单原创 2020-07-13 21:32:58 · 256 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(十一)2.5 线性表的链式表示和实现10、2.5 线性表的链式表示和实现11
2.5 线性表的链式表示和实现101、知识回顾单链表的基本操作:①单链表的销毁。②清空单链表。③求单链表的表长。④判断链表是否为空。⑤取值:取单链表中第i个元素的内容。⑥查找:按值查找:根据指定数据获取数据所在的位置(地址)。按值查找:根据指定数据获取数据所在的位置序号。⑦插入:在第i个结点前插入新结点。⑧删除:删除第i个结点。⑨单链表的建立:头插法和尾插法。2、单链表基本操作的实现(1)删除【算法2.10】删除:删除第i个结点。【算法原创 2020-07-09 21:02:59 · 305 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(十)2.5 线性表的链式表示和实现8、2.5 线性表的链式表示和实现9
2.5 线性表的链式表示和实现81、知识回顾单链表的基本操作:①单链表的销毁。②清空单链表。③求单链表的表长。④判断链表是否为空。⑤取值:取单链表中第i个元素的内容。⑥查找:按值查找:根据指定数据获取数据所在的位置(地址)。按值查找:根据指定数据获取数据所在的位置序号。⑦插入:在第i个结点前插入新结点。⑧删除:删除第i个结点。⑨单链表的建立:头插法和尾插法。2、单链表基本操作的实现(1)按值查找【算法2.8】按值查找:根据指定数据获取该数据所在原创 2020-07-06 22:17:03 · 285 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(九)2.5 线性表的链式表示和实现5、2.5 线性表的链式表示和实现6、2.5 线性表的链式表示和实现7
2.5 线性表的链式表示和实现51、单链表基本操作的实现(1)补充单链表的几个常用简单算法【补充算法3】清空链表。链表仍存在,但链表中无元素,成为空链表(头指针和头结点仍然在)。【算法思路】依次释放所有结点,并将头结点指针域设置为空。//清空链表Status ClearList(LinkList &L){//将L重置为空表 Lnode *p, *q;//或LinkList p, q; p = L->next; while(p){//没到表尾 q =原创 2020-07-03 21:11:51 · 258 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(八)2.5 线性表的链式表示和实现2、2.5 线性表的链式表示和实现3、2.5 线性表的链式表示和实现4
目录2.5 线性表的链式表示和实现21、知识回顾(1)线性表的链式存储结构(2)结点(3)链表2、单链表的定义3、单链表的存储结构4、例子2.5 线性表的链式表示和实现31、单链表基本操作的实现(1)单链表的初始化(算法2.6)(带头结点的单链表)(2)补充单链表的几个常用简单算法2.5 线性表的链式表示和实现41、单链表基本操作的实现(1)补充单链表的几个常用简单算法2.5 线性表的链式表示和实现21、知识回顾(1)线性表的链式存储结原创 2020-06-30 21:36:51 · 299 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(七)2.5 线性表的链式表示和实现1
2.5 线性表的链式表示和实现11、知识回顾顺序表的特点:以物理位置相邻表示逻辑关系。顺序表的优点:任一元素均可随机存取。顺序表的缺点:进行插入和删除操作时,需移动大量的元素;存储空间不灵活。2、链式存储结构结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。线性表的链式表示又称为非顺序映像或链式映像。用一组物理位置任意的存储单元来存放线性表的数据元素。这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。链表中元素的逻辑次序原创 2020-06-27 21:36:29 · 465 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(六)2.4 线性表的顺序表示和实现6、2.4 线性表的顺序表示和实现7
2.4 线性表的顺序表示和实现61、顺序表基本操作的实现(1)线性表的基本操作//线性表的基本操作InitList(&L)//初始化操作,建立一个空的线性表LDestroy(&L)//销毁已存在的线性表LClearList(&L)//将线性表清空ListInsert(&L, i, e)//在线性表L中第i个位置插入新元素eListDelete(&L, i, &e)//删除线性表L中第i个位置元素,用e返回IsEmpty(L)//若线性原创 2020-06-24 22:50:13 · 331 阅读 · 2 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(五)2.4 线性表的顺序表示和实现4、2.4 线性表的顺序表示和实现5
目录2.4 线性表的顺序表示和实现41、顺序表基本操作的实现(1)线性表的基本操作(2)顺序表上的查找操作(3)顺序表的查找(4)顺序表的查找算法分析2、具体实现2.4 线性表的顺序表示和实现51、顺序表基本操作的实现(1)线性表的基本操作(2)顺序表的插入(3)顺序表的插入算法分析2、具体实现2.4 线性表的顺序表示和实现41、顺序表基本操作的实现(1)线性表的基本操作//线性表的基本操作InitList(&L)//初始化操作原创 2020-06-21 20:02:25 · 381 阅读 · 2 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(四)2.4 线性表的顺序表示和实现3
2.4 线性表的顺序表示和实现31、线性表的顺序存储表示顺序表(Sequence List):备注:逻辑位序和物理位序相差1。//线性表的顺序存储表示#define MAXSIZE 100typedef struct{ ElemType elem[MAXSIZE]; int length; }SqList;typedef struct{ ElemType *elem; int length; }SqList;//顺序表类型L.elem = (ElemType*)原创 2020-06-18 20:17:07 · 562 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(三)2.4 补充:类C语言有关操作1、2.4 补充:类C语言有关操作2
目录2.4 补充:类C语言有关操作11、元素类型说明(1)顺序表类型定义(2)数组定义2、C语言的内存动态分配3、C++的动态存储分配4、C++中的参数传递2.4 补充:类C语言有关操作21、C++中的参数传递(1)传值方式(2)传地址方式(指针变量作参数)(3)传地址方式(数组名作参数)(4)传地址方式(引用类型作参数)2、引用类型作形参的三点说明2.4 补充:类C语言有关操作11、元素类型说明(1)顺序表类型定义//顺序表类型定义原创 2020-06-15 17:36:32 · 376 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(二)2.3 线性表的类型定义、2.4 线性表的顺序表示和实现1、2.4 线性表的顺序表示和实现2
目录2.3 线性表的类型定义1、抽象数据类型线性表的定义2、基本操作(1)InitList(&L)(Initialization List)(2)DestroyList(&L)(3)ClearList(&L)(4)ListEmpty(L)(5)ListLength(L)(6)GetElem(L,i,&e)(7)LocateElem(L,e,compare())(8)PriorElem(L,cur_e,&pre_e)(9)原创 2020-06-12 11:57:11 · 585 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(一)2.1 线性表的定义和特点、2.2 案例引入
目录2.1 线性表的定义和特点1、知识回顾2、线性表的定义3、线性表的例子(1)例1(2)例2(3)例3(4)例44、线性表的逻辑特征2.2 案例引入1、案例2.12、案例2.2(1)多项式非零项的数组表示(2)稀疏多项式的运算(3)数组C多大合适呢?3、案例2.34、总结2.1 线性表的定义和特点1、知识回顾数据结构:①数据的逻辑结构:线性结构(线性表;栈(特殊线性表);队列(特殊线性表);字符串、数组、广义表)和非线性结原创 2020-06-09 12:19:16 · 438 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第1章 绪论 学习笔记(六)1.4 算法和算法分析3、1.4 算法和算法分析4
1.4 算法和算法分析21、算法分析对于同一个问题,可以有许多不同的算法。究竟如何来评价这些算法的优劣程度呢?——算法分析。算法分析的目的是看算法实际是否可行,并在同一问题存在多的算法时可进行性能上的比较,以便从中挑选出比较优的算法。2、算法效率一个好的算法首先要具备正确性,然后是健壮性,可读性,在几个方面都满足的情况下,主要考虑算法的效率,通过算法的效率高低来评判不同算法的优劣程度。算法效率以下两个方面来考虑:①时间效率:指的是算法所耗费的时间。②空间效率:指的是算法执行过原创 2020-06-06 12:35:30 · 858 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第1章 绪论 学习笔记(五)1.4 算法和算法分析1、1.4 算法和算法分析2
目录1.4 算法和算法分析11、数据结构的研究内容2、算法的定义3、算法的描述(1)自然语言(2)流程图(3)伪代码(4)程序代码4、算法与程序5、算法特性(1)有穷性(2)确定性(3)可行性(4)输入(5)输出6、算法设计的要求(1)正确性(Correctness)(2)可读性(Readability)(3)健壮性(Robustness)(4)高效性(Efficiency)1.4 算法和算法分析21、算法分析2、算原创 2020-06-03 21:29:57 · 622 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第1章 绪论 学习笔记(四)1.3 抽象数据类型的表示与实现
目录1.3 抽象数据类型的表示与实现1、知识回顾(1)数据结构的研究内容(2)概念小结2、抽象数据类型(1)抽象数据类型的实现(2)抽象数据类型如何实现(3)用C语言真正实现抽象数据类型的定义(4)抽象数据类型举例1.3 抽象数据类型的表示与实现1、知识回顾(1)数据结构的研究内容(2)概念小结2、抽象数据类型一个问题抽象为一个抽象数据类型后,仅是形式上的抽象定义,还没有达到问题解决的目的,要实现这个目标,就要把抽象的变成具体的,即...原创 2020-05-31 12:29:50 · 1079 阅读 · 2 评论 -
【数据结构(青岛大学 王卓)】第1章 绪论 学习笔记(三)1.2 基本概念和术语2
目录1.2 基本概念和术语21、数据类型和抽象数据类型(1)高级程序设计语言(2)数据类型(Data Type)(3)抽象数据类型(Abstract Data Type,ADT)(4)抽象数据类型的形式定义(5)抽象数据类型(ADT)定义举例:Circle的定义(6)抽象数据类型(ADT)定义举例:复数的定义1.2 基本概念和术语21、数据类型和抽象数据类型(1)高级程序设计语言在使用高级程序设计语言编写程序时,必须对程序中出现的每个变量、常量或表达式,明确说原创 2020-05-28 12:32:07 · 641 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第1章 绪论 学习笔记(二)1.2 基本概念和术语1
1.2 基本概念和术语1、数据、数据元素、数据项和数据对象①数据(Data)。②数据元素(Data Element)。③数据项(Data Item)。④数据对象(Data Object)。2、数据(Data)数据是能输入计算机且能被计算机处理的各种符号的集合。①信息的载体。②是对客观事物符号化的表示。③能够被计算机识别、存储和加工。包括:①数值型的数据:整数、实数等。②非数值型的数据:文字、图像、图形、声音等。3、数据元素(Data Element原创 2020-05-26 11:39:49 · 814 阅读 · 0 评论 -
【数据结构(青岛大学 王卓)】第1章 绪论 学习笔记(一)0 前言、1.1 数据结构的研究内容
0 前言1、同学们心中的疑问①这门课程是讲什么的?②这门课重要吗?③这门课好学吗?④怎么才能学好这门课?2、课程内容凭借一句话获得图灵奖的Pascal语言之父——Nicklaus Wirth,让他获得图灵奖的这句话就是他提出的著名公式:“程序=数据结构+算法”。这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的“E=MC^2”。——一个公式展示出了程序的本质。3、数据结构这门课重要吗?①数据结构是这计算机软件相关专业的专业基础课。②在教学计划中的地位:核原创 2020-05-22 12:13:05 · 1502 阅读 · 0 评论