数据结构与算法
现代计算机常用数据结构和算法

现代计算机常用数据结构和算法现代计算机科学中常用的数据结构和算法非常多,下面是一些核心且广泛应用于软件开发、数据库系统、操作系统、编译器设计、网络编程、机器学习以及其他计算密集型任务中的数据结构与算法:常用数据结构:1. 数组:线性存储结构,通过索引访问元素,支持随机访问。
2. 链表:包括单向链表、双向链表和循环链表,通过指针链接元素,插入删除操作灵活但不支持随机访问。
3. 栈(Stack):后进先出(LIFO)的数据结构,常用于函数调用栈、表达式求值等。
4. 队列(Queue):先进先出(FIFO)的数据结构,适用于处理任务排队、广度优先搜索等问题。
5. 哈希表(Hash Table):基于散列函数实现快速查找,用于实现关联数组、缓存、唯一性检查等功能。
6. 树:如二叉树(包括二叉查找树、AVL树、红黑树)、B树、B+树、Trie树等,用于搜索、排序、文件系统索引等。
7. 图(Graphs):表示节点集合以及节点之间的关系,常见于社交网络分析、路径规划等领域。
8. 堆(Heap):一种特殊的树形数据结构,分为最大堆和最小堆,用于优先队列、堆排序等。
9. 集合与映射(Set & Map):无序不重复元素的集合和键值对结构,提供高效查找、插入和删除操作。
常用算法:1. 排序算法:快速排序、归并排序、冒泡排序、选择排序、插入排序、堆排序等。
2. 搜索算法:线性搜索、二分查找、插值搜索、哈希查找、深度优先搜索(DFS)、广度优先搜索(BFS)等。
3. 图算法:最短路径算法(Dijkstra、Bellman-Ford、Floyd-Warshall),拓扑排序,最小生成树算法(Prim、Kruskal)等。
4. 动态规划:解决具有重叠子问题和最优子结构的问题,如背包问题、最长公共子序列(LCS)等。
5. 贪心算法:在每一步都采取当前看来最优的选择,如霍夫曼编码、活动选择问题等。
6. 回溯算法和分支限界法:用于解决组合优化问题,如八皇后问题、旅行商问题等。
数据结构与算法的联系与区别

数据结构与算法的联系与区别数据结构与算法的联系与区别一、数据结构的概念数据结构是指数据对象中元素之间的关系,以及数据元素本身的特点。
它是计算机组织和存储数据的一种方式,直接影响到算法的设计和性能。
1.1 线性数据结构线性数据结构是数据元素之间存在一对一的关系,例如:数组、链表、栈和队列等。
这些数据结构在存储和访问数据时具有一定的规律性。
1.2 非线性数据结构非线性数据结构是数据元素之间存在一对多或多对多的关系,例如:树和图等。
这些数据结构的存储和访问方式相对复杂,需要特殊的算法来处理。
二、算法的概念算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列。
算法通过操作数据结构来实现对数据的操作,并得到预期的结果。
2.1 算法的特性算法具有以下特性:●输入:算法具有输入,可以是零个或多个输入。
●输出:算法至少有一个输出。
●有穷性:算法在有限的步骤内必须终止。
●确定性:算法中每一步的执行必须具有唯一确定的效果。
●可行性:算法的每一步都必须是可行的,即能够通过执行有限次数完成。
三、数据结构与算法的联系数据结构和算法紧密相关,它们互为补充,相互依赖。
3.1 数据结构对算法的影响不同的数据结构适用于不同种类的问题和算法。
选择合适的数据结构能够有效地提高算法的效率。
3.2 算法对数据结构的选择算法的设计基于特定的问题和已有的数据结构。
在算法设计过程中,根据问题的特点选择合适的数据结构是至关重要的。
四、数据结构与算法的区别数据结构和算法虽然有联系,但也存在一些明显的区别。
4.1 抽象层次不同数据结构是对数据的组织和存储方式的抽象,而算法是对解决问题的步骤和过程的抽象。
4.2 解决问题的角度不同数据结构关注如何组织和存储数据,而算法关注如何通过操作数据得出结果。
4.3 面向不同的目标数据结构的目标是提供高效的存储和访问数据的方式,而算法的目标是寻求有效的解决问题的方法。
附件:本文档未涉及任何附件。
法律名词及注释:无。
数据结构与算法

数据结构与算法数据结构和算法是计算机科学中最基本的两个概念之一。
它们是计算机科学的核心,并影响着信息技术的发展进程。
数据结构是存储和组织数据的方法。
算法是解决问题的方法。
数据结构和算法是两个紧密相关的概念,因为在编写程序时,必须考虑数据的组织和我们如何处理数据以得到正确的结果。
数据结构和算法是程序员必须掌握的基本概念。
在编写程序时,我们通常要使用一些数据类型,比如整数、浮点数、字符串、数组和列表等。
这些数据类型都有它们自己的特点和限制。
我们要根据问题的需要,选择合适的数据类型,并将它们组织成数据结构,以便利用它们来解决问题。
而算法,则是用来处理和操作这些数据结构的方法。
数据结构和算法的重要性数据结构和算法是计算机科学中极为重要的概念。
在编写程序时,我们必须考虑使用合适的数据结构和算法来解决问题。
如果我们选择了不合适的数据结构,或是没有正确地实现算法,那么程序可能会运行缓慢或者产生错误。
因此,掌握数据结构和算法可以帮助程序员更有效地编写程序,从而提高程序的性能和准确性。
数据结构和算法的种类数据结构和算法各有多种类型。
以下是几种常用的数据结构和算法:数组(Array):数组是一组相同类型的数据,通过下标访问数组中的元素。
在编写程序时,数组是最常用的数据结构之一。
链表(LinkedList):链表是一组通过指针(引用)相连的节点集合。
每个节点包含一个值和一个指向下一个节点的指针。
堆(heap):堆是一种完全二叉树,它满足一定的堆性质。
堆常用于实现优先队列和排序。
树(Tree):树是一种数据结构,它由若干个节点和边组成。
每个节点有零个或多个子节点,最顶层的节点称为根节点。
哈希表(HashTable):哈希表是一种数据结构,它可以在 O(1)时间内查找和修改数据。
二分查找(Binary Search):二分查找是一种查找算法,它通过递归或迭代的方式在有序数组中查找指定元素。
快速排序(Quick Sort):快速排序是一种排序算法,它采用分治思想,将原始数据分成较小的、更易排序的子序列,再对子序列进行排序,最终得到有序序列。
算法和数据结构的4种关系

算法和数据结构的4种关系一、算法与数据结构的关系算法和数据结构是计算机科学中两个密切相关的概念。
算法是解决问题的一系列步骤或指令,而数据结构是组织和存储数据的方式。
算法和数据结构之间存在着紧密的联系和相互依赖关系。
算法的设计和效率与所使用的数据结构密切相关。
不同的数据结构适用于不同类型的问题,选择合适的数据结构可以提高算法的效率。
例如,对于需要频繁插入和删除操作的问题,链表数据结构比数组更加高效。
算法的实现通常需要使用数据结构来存储和操作数据。
例如,排序算法通常需要使用数组或链表来存储待排序的数据。
数据结构的选择和实现方式会直接影响算法的正确性和效率。
算法和数据结构的研究相互促进。
算法的设计和分析需要考虑到所使用的数据结构,而对数据结构的研究也需要考虑到算法的需求。
算法和数据结构的研究成果相互借鉴,推动了计算机科学的发展。
二、算法与数据结构的分类关系算法和数据结构可以按照不同的分类方式进行划分。
下面介绍四种常见的分类关系。
1. 线性结构与非线性结构线性结构是指数据元素之间存在一对一的关系,例如数组和链表。
非线性结构是指数据元素之间存在一对多或多对多的关系,例如树和图。
算法和数据结构的设计和分析需要考虑到数据元素之间的关系,因此线性结构和非线性结构是算法和数据结构分类的重要依据。
2. 静态结构与动态结构静态结构是指数据结构的大小和形式在创建后不可改变,例如数组。
动态结构是指数据结构的大小和形式可以根据需要进行动态调整,例如链表。
算法和数据结构的设计和实现需要考虑到数据结构的静态性或动态性,以及相应的操作和调整方式。
3. 存储结构与逻辑结构存储结构是指数据结构在计算机内存中的表示方式,例如数组和链表。
逻辑结构是指数据元素之间的逻辑关系,例如线性结构和非线性结构。
算法和数据结构的设计和实现需要考虑到存储结构和逻辑结构之间的映射关系,以及相应的操作和访问方式。
4. 基本结构与扩展结构基本结构是指常见的数据结构,例如数组、链表、栈和队列。
《数据结构与算法 》课件

自然语言处理中,数据结构用于表示句子、单词之间的关系,如依 存句法树。
计算机视觉
计算机视觉中的图像处理和识别使用数据结构来存储和操作图像信 息,如链表和二叉树。
算法在计算机科学中的应用
加密算法
加密算法用于保护数据的机密性和完整性,如 RSA算法用于公钥加密。
排序算法
排序算法用于对数据进行排序,如快速排序和归 并排序广泛应用于数据库和搜索引擎中。
归并排序
将两个或两个以上的有序表组合成一个新的有序表。
查找算法
线性查找:从数据结构的一端开始逐 个检查每个元素,直到找到所查找的 元素或检查完所有元素为止。
二分查找:在有序数据结构中查找某 一特定元素,从中间开始比较,如果 中间元素正好是要查找的元素,则搜 索过程结束;如果某一特定元素大于 或者小于中间元素,则在数组大于或 小于中间元素的那一半中查找,而且 跟开始一样从中间元素开始比较。如 果在某一步骤数组为空,则代表找不 到。这种搜索算法每一次比较都使搜 索范围缩小一半。
04
常见算法实现
排序算法
冒泡排序
通过重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复 地进行直到没有再需要交换,也就是说该数列已经排序完成。
快速排序
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,然后再按 此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
数据结构在计算机科学中的应用
1 2
数据库系统
数据结构是数据库系统的基础,用于存储、检索 和管理大量数据。例如,B树和哈希表在数据库 索引中广泛应用。
算法和数据结构的关系

算法和数据结构的关系算法和数据结构是计算机科学中最基本的两个概念,它们的关系密不可分。
算法是解决问题的方法,数据结构是数据的组织形式。
算法和数据结构的设计和选择直接关系到程序的效率和质量。
算法和数据结构的关系算法和数据结构是密切相关的,它们相互依存,彼此支持。
算法是基于数据结构的,数据结构是算法的基础。
算法需要数据结构来存储和处理数据,而数据结构则提供了算法所需要的数据操作接口。
因此,算法和数据结构是相互依存,彼此支持的关系。
在程序设计中,算法的效率和质量直接受到数据结构的影响。
数据结构的选择和设计对算法的效率和质量有着重要的影响。
因此,算法和数据结构的设计和选择是程序设计中最基本的问题之一。
数据结构的种类数据结构是计算机科学中的重要概念,它是指数据元素之间的关系以及数据元素的组织形式。
数据结构分为线性结构和非线性结构两种。
线性结构是指数据元素之间的关系是一对一的关系,其中包括线性表、栈、队列、串等。
线性表是最基本的数据结构,它是一种有序的数据元素集合。
栈是一种特殊的线性表,它只允许在表的一端进行插入和删除操作。
队列也是一种特殊的线性表,它只允许在表的一端进行插入操作,在另一端进行删除操作。
串是由零个或多个字符组成的有限序列,它是一种特殊的线性表。
非线性结构是指数据元素之间的关系不是一对一的关系,其中包括树、图等。
树是一种非线性结构,它由若干个节点组成,节点之间的关系是一对多的关系。
图是一种非线性结构,它由若干个节点和连接这些节点的边组成,节点之间的关系是多对多的关系。
算法的设计与实现算法的设计与实现是程序设计中最基本的问题之一。
算法的设计需要考虑到问题的特点、数据结构的选择和算法的效率等因素。
算法的实现需要考虑到语言的特点、程序的可读性、可维护性和可扩展性等因素。
算法的设计过程包括问题分析、算法设计、算法评估和算法改进等步骤。
问题分析是指对问题进行深入的分析和理解,找出问题的本质和特点。
算法设计是指根据问题的特点和数据结构的选择,设计出符合要求的算法。
数据结构与算法(共11张PPT)

(b)入队3个元素(c)出队3个元素
(b) d, e, b, g入队
利用一组连续的存储单元(一维数组)依次存放从队 在循环队列中进行出队、入队操作时,队首、队尾指
队列示意图
在非空队列里,队首指针始终指向队头元素,而队
(b) d, e, b, g入队
8
Q.rear
a5
a4
Q.front
(d)入队2个元素
a1, a2, … , an
的指修针改 和是队依列先中进元先素出的Q的变.re原化a则情r 进况行。的,如图所示。
a3
Q.front
a2
a1
首到队尾的各个元素,称为顺序队列。
(c)
d, e出队Q.front
Q.front
◆出队:首先删去front所指的元素,然后将队首指针front+1,并
◆rear所指的单元始终为空(a。)空队列
i
i, j, k入队
(e)
1
2
3
k
r
01
j5
2
front
43
i
b, g出队
(f )
r, p,
p rear
s, t入队
循环队列操作及指针变化情况
入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针 ,故队空和队满时头尾指针均相等。因此,无法通过front=rear来 判断队列“空”还是“满”。解决此问题的方法是:约定入队前,
数据结构与算法
1算法基础 2数据结构
3栈
4队列
5链表 6树和二叉树
7查找
4队列
✓队列的基本概念 ✓队列运算
✓循环队列及其运算
4队列
1.队列的基本概念
数据结构与算法讲义课件

04
基础算法
排序算法
冒泡排序
通过重复地比较相邻元素并交换位置,使得较大 的元素逐渐向数组尾部移动,最终实现数组序序列的合适位置, 使得已排序序列保持有序,直到所有元素均插入 完毕。
选择排序
每次从未排序的元素中选取最小(或最大)的一 个元素,将其放到已排序序列的末尾,直到所有 元素均排序完毕。
03
算法概述
算法的定义与特性
总结词
算法是解决问题的步骤集合,具有确定 性、有限性、输入和输出。
VS
详细描述
算法是解决问题的明确、具体的步骤集合 ,每个步骤都有确切的含义,不存在歧义 。算法在执行过程中,从开始到结束,是 确定性的,每一步都有确定的输入和输出 。算法在有限的时间内完成执行,无论何 种情况下都能得出结果。算法具有输入和 输出,可以接受外部数据,并对外输出结 果。
快速排序
通过选取一个基准元素,将数组分成两部分,其 中一部分的所有元素都比基准元素小,另一部分 的所有元素都比基准元素大,然后递归地对这两 部分进行快速排序。
查找算法
线性查找
从数组的第一个元素开始,逐个比较 每个元素,直到找到目标元素或遍历 完整个数组。
哈希查找
利用哈希函数将键值转化为数组下标, 然后在相应的数组下标处查找目标元 素。
性是指算法在修改和升级时的难易程度。
算法的分类
总结词
详细描述
根据不同标准可以将算法分为不同类型,如 按照功能、按照应用领域、按照设计方法等。
按照功能可以将算法分为排序算法、搜索算 法、图论算法等。按照应用领域可以将算法 分为计算机视觉算法、自然语言处理算法等。 按照设计方法可以将算法分为分治法、贪心 法、动态规划法等。
树
总结词
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模拟题一、一单选题1.数据结构在计算机内存中的表示是指( )。
A. 数据的逻辑结构B. 数据结构C. 数据的存储结构D.数据元素2. 数据的( )包括集合、线性结构、树形结构和图状结构四种基本类型。
A.逻辑结构和存储结构B.存储结构C.逻辑结构D.物理结构3. 通常所说的时间复杂度是指( )。
A. 语句的频度和B. 算法的时间消耗C. 最坏时间复杂度D. 渐近时间复杂度4.线性表的顺序存储结构是通过( )的方式表示元素之间的关系。
A. 后继元素地址B. 元素的存储顺序C. 左、右孩子地址D. 后继元素的数组下标5. 在顺序栈S中插入元素e时,执行( )。
A. S.top--; *S.top = e;B. *S.top = e; S.top++;C. *S.top = e; S.top--;D. S.top++; *S.top = e;6. 一个队列的入列序列是1,2,3,4,则队列的输出序列是( )。
A. 4,3,2,1B. 1,4,3,2C. 1,2,3,4D. 3,2,4,17. 对于稀疏矩阵的压缩存储只需存储( )。
A. 所有元素B. 对角线上的元素C. 零元素D. 非零元素8. 对二叉树从1开始编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用( )。
A. 从根结点开始的层次遍历B. 先序遍历C. 中序遍历D. 后序遍历9. 按二叉树的定义,具有3个结点的二叉树一共有( )种。
A. 2B. 3C. 4D. 510. 对于具有n个顶点和e条边的有向图,采用邻接表表示,则表头向量的大小为( )。
A. nB. n+1C. n-1D. n+e11. 连通图的生成树是( )。
A. 极小连通子图B. 顶点间可以无路径C. 连通子图D. 边数为顶点数12. 快速排序方法在( )情况下最不利于发挥其长处。
A. 被排序数据已基本有序B. 被排序的数据量太大C. 被排序数据数目为奇数D. 被排序数据中含有多个相同值二填空题1. ________中任何两个结点之间没有逻辑关系。
2. 在线性表中,一个数据元素可由若干数据项组成,常将此种数据元素称为_______。
3. 在一个单链表中,若删除p所指结点的后继结点,则执行____________________________________________________________。
4. 栈的表尾称为________。
5. 入队操作要修改________。
6. 广义表是数据元素的有限序列,其元素可以是单个元素,也可以是________。
7. 深度为5的满二叉树的结点数为________。
8. 具有3个结点的树有________种。
9. Prim算法适用于边数较________的图。
10. 遍历是指按某种搜索路径访问二叉树的每个结点,而且每个结点仅被访问______。
11. 对二叉排序树进行________遍历,可以得到该二叉树所有结点构成的有序序列。
12. 具有20个记录的序列,采用起泡排序最多的比较次数为________。
三问答题1. 请用C语言给出顺序表的类型定义。
2. 数据结构形式定义为(D, S),其中D = { a,b,c,d,e },S = { R },R = {(a, b), (b, c), (c, d), (c, e), (d, e) },画出其逻辑结构图。
3. 举例说明对相同的逻辑结构,同一种运算在不同的存储方式下实现,其效率不同。
4. 将如下树转换成二叉树。
5. 若某非空二叉树的先序序列和后序序列正好相同,试说明二叉树的形态及原因。
6. 以关键字序列{12,2,16,9,10,8,20}为例,写出执行快速排序算法的各趟排序结束时,关键字序列的状态。
四算法题1. 下面算法的功能是:在无头结点的线性单链表中插入元素结点,即在第i个位置之前插入新的数据元素e 。
请在空缺处填入相应的语句。
Status ListInsert_L(LinkList &L, int i, ElemType e){//L是该链表的头指针if(i==1){s=(LinkList)malloc(sizeof(LNode));s->data=e;(1)_________________________;(2)_________________________;}else{ p=L;j=1;while (p&&j<i-1){p=p->next; ++j;}if(!p||j>i-1)return ERROR;s=(LinkList)malloc(sizeof(LNode))s->data=e;(3)_______________________;(4)_________________________;}return OK;}2. 试写出下面操作算法的功能。
void A(LinkList &La, SqList Lb) {La=(LinkList)malloc(sizeof (LNode));La->next=NULL;p=La;for (i=0; i<=Lb.length-1; i++){q=(LinkList)malloc(sizeof(LNode));q->data=Lb.elem[i];p->next=q;p=q;}q->next=NULL;}模拟题1答案一单选题1. C 4. B 6. C7. D 10. A 12. A二填空题1. 集合2.记录5. 队尾指针6. 广义表7. 318. 29. 多或者稠密12. 190三问答题1.typedef struct{ElemType *elem;int length;int listsize;}SqList;2.3. 略4.5.略6.[8,2,10,9] 12 [16,20][2] 8 [10,9] 12,16,202,8,9,10,12,16,20四算法题1.(1) s->next=L;(2) L=s;(3) s->next=p->next;(4) p->next=s;2. 算法的功能是:建立一个带有头结点的单链表,链表中存储顺序表中的已有元素《数据结构与算法》模拟题2一、单选题1.数据结构可形式地定义为(D, S),其中S是D上( )的有限集。
ABE CF G DA.操作B.存储映像C.关系D.数据元素2. 数据的最小单位是( )。
A. 数据结构B. 数据元素C. 数据项D. 文件3. 下列数据结构中( )是线性数据结构。
A. 二叉树B. 无向图C. 赫夫曼树D.队列4. 采用链式存储结构存储线性表的优点是( )。
A.便于随机存取B. 花费的存储空间比顺序存储少C.便于插入和删除操作D. 数据元素的物理顺序与逻辑顺序相同5. ( )不是队列的基本运算。
A. 判断一个队列是否为空B. 从队头删除一个元素C. 在队列第i个元素之后插入一个元素D. 读取队头元素的值6. 一个队列的入列序列是1,2,3,4,则队列的输出序列是( )。
A.4,3,2,1B.3,2,4,1C.1,4,3,2D.1,2,3,47. 广义表((a), (b))的表尾是( )。
A.( )B.bC. ((b))D. (b)8. 若无向图中有n个结点,e条边,则它的邻接表需要( )个表结点。
A. nB. 2nC. 2eD. e9. 在哈希函数H(key) = key%m中,一般来说,m应取( )。
A. 奇数B. 偶数C. 充分大的数D. 素数10. 赫夫曼树的带权路径长度是( )。
A.所有叶结点带权路径长度之和B.所有结点权值之和C.带权结点的值D.除根以外所有结点权值之和11. 设一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当采用折半查找值为95的结点时,( )次比较后查找结束。
A.3B.4C.5D.612. 在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是( )。
A. 直接插入排序B. 快速排序C. 冒泡排序D. 简单选择排序二、填空题1. 在线性表中,一个数据元素可由若干数据项组成,在这种情况下,常将数据元素称为____________。
2. 在图形结构中,每个结点的前驱结点和后继结点可以有_______。
3. 从逻辑结构来看,线性结构的特点是____________。
4. 栈又称为________________的线性表。
5. 设有一个顺序栈S,元素a,b,c,d,e,f依次入栈,如果6个元素的出栈顺序为b,c,a,d,f,e,则顺序栈的容量至少为____。
6. 在队列中,可进行删除操作的一端称为________。
7. 对于稀疏矩阵的压缩存储只需存储_________________。
8. 邻接表是图的___________存储结构。
9. 在一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点为______个。
10. 有100个结点的树有________条边。
11. 对二叉排序树进行________遍历,可以得到该二叉树所有结点构成的有序序列。
12. 起泡排序、快速排序和插入排序中,不稳定的是________。
三、解答题1. 请用C语言给出单链表(线性表的链式存储结构)的类型定义。
2. 设有多项式A(x) = 1 + 3x + 2x4,试用线性链表表示。
3. 设有一个二维数组A[10][20],采用以行序为主序的存储结构,每个元素占两个空间,第一个元素的存放位置为100(十进制),求元素A[6][8]的存放位置。
4. 将如下树转换成二叉树。
5. 哈希查找算法与其他查找方法对比有何特点?何谓冲突?请写出两种解决冲突方法的名称。
6. 设哈希表表长为11,哈希函数(用除留余数法)H(key) = key mod 11,解决冲突的方法为开放定址法Hi(key)=(H(key)+di)mod11,对下列关键字序列{19,13,33,02,16,24,7},给出计算过程并构造哈希表。
四、算法题1.在长度大于1的带头结点的单链表中,p为指向待处理结点的指针,pre为指向最小值结点的前驱结点的指针。
下面算法的功能是:删除最小值结点。
请在空缺处填入相应的语句。
void Delete(LinkList &L){p = L->next;pre = L;q=p;while( (1)_______________){if (p->next->data < q-> data){(2)____________;(3)____________;}(4)____________;}pre->next = q->next;free(q);}2. 阅读如下算法,给出该算法的功能。