- 博客(22)
- 收藏
- 关注
原创 栈的基本运算
栈的基本运算包括: (1)置空栈SETNULL(S) (2)判栈空 EMPTY(S):布尔函数 (3)入栈PUSH(S,x) (4)出栈POP(S) (5)取栈顶TOP(S) 3.1.3 栈的顺序存储表示 栈的顺序存储结构简称为顺序栈,和线性表相类似,用一维数组来存 储栈。 ◆ 静态顺序栈 实现简单,但不能根据需要增大栈的存储空间; ◆ 动态顺序栈 可以根据需要增大栈的存储空间,但实现稍为复杂。...
2021-12-13 14:30:50
3388
原创 栈的基本概念
栈的基本概念 栈(Stack):是限制在表的一端进行插入和删除操作的线性表。又称为 后进先出LIFO (Last In First Out)或先进后出FILO (First In Last Out)线性 表。 栈顶(Top):允许进行插入、删除操作的一端,又称为表尾。用栈顶指 针(top)来指示栈顶元素。 栈底(Bottom):是固定端,又称为表头。 空 栈:当表中没有元素时称为空栈。栈的抽象数据类型定义 ADT Stack{ 数据对象:D ={ ai|ai∈Ele
2021-12-13 14:29:27
539
原创 循环链表的操作
循环链表的操作 对于单循环链表,除链表的合并外,其它的操作和单 线性链表基本上一致,仅仅需要在单线性链表操作算法基础上作以下简单 修改: ⑴ 判断是否是空链表:head->nexthead ; ⑵ 判断是否是表尾结 点:p->nexthead ; 2.4.2 双向链表 双向链表(Double Linked List) :指的是构成链表的每个结点中设立两个 指针域:一个指向其直接前趋的指针域prior,一个指向其直接后继的指针 域next。这样形成的链表中有两个方向不.
2021-12-05 14:56:49
1422
原创 【无标题】
单链表操作 1.查找运算 1)按序号查找 GET(L,i) 给定一个序号,在单链表中查找该序号 对应的结点, 若结点存在,则返回该结点的指针,否则返回空指针 2)按值查找 LOCATE(head,key) 2.单链表的插入 1)后插操作: 在指针p所指结点之后插入 2)前插操作: 在指针p所指结点之前插入线性表的其它链式表示 单循环链表 循环链表(Circular Linked List):是一种头尾相接的链表。其特点是最 后一个结点的指针域指向链表的.
2021-12-05 14:55:43
362
原创 建立单链表
建立单链表 从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新 结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束 标志为止。即每次插入的结点都作为链表的第一个结点。 ⑴ 头插入法建表 头插法建表:将新结点插入到当前链表的表头 优点:算法简单 缺点: 链表中结点次序和输入次序相反 (2)尾插法建表:将新结点插入到当前链表的表尾(需引入r)不带头结点的尾插法:插入时,第一个结点的处理与其它结点的处理 有区别。结束时,空表和非空表的处理有区别。 带
2021-12-05 14:54:25
195
原创 链表结点结构
链表结点结构 data :数据域,存放结点的值。next :指针域,存放结点的直接后 继的地址。单链表存储结构表示结点是通过动态分配和释放来的实现,即需要时分配,不需要时释 放。实现时是分别使用C语言提供的标准函数:malloc() ,realloc(), sizeof() ,free() . 动态分配 p=(LNode*)malloc(sizeof(LNode)); 动态释放 free(p) ; ...
2021-12-05 14:53:43
416
原创 线性表的链式存储结构
线性表的链式存储结构 1、链式存储:用一组任意的存储单元存储线性表, 逻辑上相邻的结点 在物理位置上不一定相邻,结点间的逻辑关系由存储结点时附加的指针字 段表示 2、链表:采用链式存储方法的线性表称为链表。 3、每一个结只包含一个指针域的链表,称为单链表 为了正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须 存储指示其直接后继结点的地址(或位置),称为指针(pointer)或链(link), 这两部分组成了链表中的结点结构...
2021-12-05 14:52:01
355
原创 顺序表的优缺点
顺序表的优点: (1)无须增加额外的存储空间表示结点间的逻辑关 系。 (2)可以方便地随机存取表中任一结点。 顺序表的缺点: (1)插入和删除运算不方便,通常须移动大量结 点,效率较低。 (2)难以进行连续的存储空间的预分配,尤其是当表变 化较大时。 2.2.2 顺序表的基本操作 数组具有天然的线性表特点,因为其在内存中的存储位置是连续的, 存储结构特点上能保证数据的有序性,只要存入数组的数据从0开始紧凑存 储就是顺序表实现了。 ...
2021-11-15 22:15:50
7249
原创 线性表的顺序存储结构
线性表的顺序存储结构 1、顺序存储:将线性表的结点按逻辑次序依次存放在一组地址连续的 存储单元里 2、顺序表:采用顺序存储方法存储的线性表称顺序表。 3、存储地址的计算: LOC(ai+1)=LOC(ai)+c LOC(ai)=LOC(a1)+(i-1)*c 1<=i<=n 这里:LOC(a1)为结点a1的存储起 址(基地址),c为每个结点所占存储单元数。 ...
2021-11-15 22:14:17
1067
原创 线性表的抽象数据类型定义
线性表的抽象数据类型定义 线性表的抽象数据类型定义为(伪代码) ADT List{ 数据对象:D = { ai | ai∈ElemSet, i=1,2,…,n, n≧0 } 数据关系:R = {<ai-1, ai> | ai-1, ai∈D, i=2,3,…,n } 数据操作: InitList(); //初始化 DestroyList(); //销毁 ClearList(); //清除 ListEmpty(); //判断是否为空 ListLength(); //长度 G
2021-11-15 22:13:49
831
原创 线性表1.1
线性结构是最常用、最简单的一种数据结构。而线性表是一种典 型的线性结构。其基本特点是线性表中的数据元素是有序且是有限的。在这种结构中:① 存在一个唯一的被称为“第一个”的数据元素; ② 存在一个唯一的被称为“最后一个”的数据元素; ③ 除第一个元素 外,每个元素均有唯一一个直接前驱; ④ 除最后一个元素外,每个元 素均有唯一一个直接后继。线性表内存储的元素是同一种数据类型的数据对象,相邻数据元素之 间存在顺序关系。由这样特点的数据特征元素相同的元素构成的有限序列 成为线
2021-11-08 20:15:47
214
原创 指数、对数、级数
1. 指数 指数是幂运算aⁿ(a≠0)中的一个参数,a为底数,n为指数,指数位于底 数的右上角,幂运算表示指数个底数相乘2. 对数 在数学中,对数是对求幂的逆运算,正如除法是乘法的倒数3. 级数 级数是指将数列的项依次用加号连接起来的函数。...
2021-11-08 20:13:47
1435
原创 数据结构与算法关系
数据结构与算法关系 著名计算机科学家N.Wirth教授提出"程序 = 数据结构 + 算法"的观点, 算法和数据结构是相辅相成的关系。数据结构是相互之间存在某种关系的数据元素的集合,算法是解决特 定问题的有限求解步骤。 数据结构是算法实现的基础,算法总是要依赖于某种数据结构实现, 设计一种算法时会构建适合于这种算法的数据结构。 算法抽象一些,侧重对问题的建模,而数据结构则是具体实现。特定 的算法往往搭配特定的数据结构,数据结构是为了实现某种特定算法。...
2021-10-22 21:22:25
2216
原创 算法1.5
程序运行所需的存储空间包括以下两部分:⑴固定部分。这部分空间与所处理数据的大小和个数无关,主要包括程序代码、常量、简单变量、定长成分的结构变量所占的空间。⑵可变部分。这部分空间大小与算法在某次执行中处理的特定数据的大小和规模有关。例如100个数据元素的排序算法与1000个数据元素的排序算法所需的存储空间显然是不同的。...
2021-10-22 21:20:21
114
原创 算法1.4
算法的时间复杂度 指运行算法所需的时间-----该算法中每条语句的执行时间之和。 算法时间复杂度记为O(f(n)),它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进复杂度,简称时间复 杂度。其中f(n)是问题规模n的某个函数。 O(1) :常量时间阶 O (n):线性时间阶 O(㏒n) :对数时间阶 O(n㏒n) :线性对数时间阶 1.4.4.2 空间复杂度 是指算法编写成程序后,在计算机中运行时所需存储空间大小的度量。
2021-10-22 21:19:23
75
原创 算法1.3
1、算法效率的度量 算法性能主要包括算法的时间性能和空间性能。解决一个问题可能有很多中不同的算法,如何衡量某个算法那的好坏呢? 2、事后统计方法:通过设计好的测试程序和数据,利用计算机计时器对 不同算法编制的程序的运行时间进行比较。缺点是首先要根据算法编写出 可运行程序,硬件因素掩盖算法优劣,测试数据设计困难。 事前分析估算 3、方法:在计算机程序编制前,依据统计方法对算法进行估算。一个程序运 行消耗时间由以下因素决定:1、算法选用何种策略; 2、编译程序所产生的机器代码的质量;
2021-10-22 21:17:21
72
原创 算法1.2
1、算法描述 自然语言:用自然语言来描述算法的优点是简单且便于人们对算法的阅读。缺点是不够严谨。N-S 盒图-程序流程图: 其特点是描述过程简洁、明了。程序代码: 直接使用程序设计语言并不容易,而且不太直观,常常需要借助于注释才能使人看明白。伪代码: 伪码语言介于高级程序设计语言和自然语言之间,它忽略高级程序设计语言中一些严格的语法规则与描述细节,2、算法设计的要求 ① 正确性(Correctness ): 算法应满足具体问题的需求。② 可读性 (Readabi.
2021-10-19 19:48:07
241
原创 算法1.1
算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令 的有限序列,其中每一条指令表示一个或多个操作。算法特性: ① 有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在 有穷时间内完成。② 确定性:算法中每一条指令必须有确切的含义。不存 在二义性。且算法只有一个入口和一个出口。 ③ 可行性: 一个算法是能 行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实 现。 ④ 输入: 一个算法有零个或多个输入,这些输入取自于某
2021-10-19 19:47:01
97
原创 存储(物理)结构1.2
数据的运算是定义在数据的逻辑结构上的一个运算的集合运算的实现与存储结构密切相关逻辑结构与存储结构是多对多的关系数据结构的运算数据结构的主要运算包括:1、建立一个数据结构2、消除一个数据结构3、从一个数据结构中删除一个数据元素4、把一个数据元素插入到一个数据结构中5、对一个数据结构进行访问6、对一个数据结构(中的数据元素)进行修改7、对一个数据结构进行排序8、对衣蛾数据结构进行查找...
2021-10-05 12:12:00
75
原创 存储(物理)结构
指数据元素在计算机中的存储方式顺序存储方法:数据元素在内存中按序连续存储,节点间的逻辑关系由存储单元的邻接关系来体现链接存储方法:用指针指出其直接后继结点的存储位置,节点间的逻辑关系由存储单元的邻接关系来体现。逻辑结构与存储结构关系:一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的的存储结构在C语言中,用一堆数组表示顺序存储结构,用结构体类型表示链式存储结构逻辑结构是从逻辑关系上描述数据,与存储无关,是独立于计算机的逻辑结构是从具体问题抽象出来的数学模型存储结
2021-10-05 12:05:36
426
原创 数据结构的逻辑结构1.2
数据结构是相互之间存在一种或多种特定关系的数据元素的集合数据结构的三个组成部分:1、逻辑结构 2、存储结构 3、数据操作1、逻辑结构:是指相互之间具有(存在)一定联系(关系)的数据元素的集合,元素之间的相互联系叫逻辑结构。 4种基本类型:1、集合...
2021-09-19 16:17:01
2516
原创 数据结构1
《基本算法》是一部较系统的阐述数据结构的逻辑分为:1、无结构阶段 2、结构化阶段 3、面向对象阶段数据结构的概念:数据是信息的载体,他能够被计算机识别,存储和加工处理。数据分类 :数值型数据(原子类型):如整数、实数、布尔值(0或1)处理方法由《数值计算》研究非数值(结构类型):由字符、声音、图像等,处理方法由《数据结构》研究数据元素:它是数据的基本单位,数据元素也叫做结点或记录。在计算机程序中通常作为一个整体进行考虑和处理。数据对象:...
2021-09-19 15:56:46
39
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人