![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 71
Wesqun
八爪鱼,主打什么都抓。
展开
-
【数据结构】KMP算法
KMP(Knuth-Morris-Pratt)算法是一种改进的字符串匹配算法,由D.E.Knuth、J.H.Morris和V.R.Pratt共同提出,用于在一个文本串(主串)中搜索一个词(模式串)的位置。KMP算法的关键在于当字符串匹配过程中出现字符不匹配时,能知道部分已经比较过的字符的信息,利用这些信息避免重新比较这些字符,从而提高算法的效率。原创 2024-06-10 17:37:44 · 782 阅读 · 0 评论 -
【数据结构】队列——循环队列(详解)
0 循环队列循环队列(Circular Queue)是队列的一种实现方式,它通过将队列存储空间的最后一个位置与第一个位置相连接,形成一个循环的队列结构,从而可以更加高效地利用存储空间。在循环队列中,当队尾指针到达队列存储空间的末尾时,下一个插入操作将从头开始,即实现了队列的“循环”。1 特定条件下循环队列队/空队满判断条件在循环队列中,判断队列是否为空或已满是一个重要的操作。由于循环队列的特性,我们不能简单地通过比较队头指针(front)和队尾指针(rear。原创 2024-06-09 22:16:32 · 749 阅读 · 0 评论 -
【数据结构】队列的应用(详解)
队列作为一种基础的数据结构,在多种场景下都有重要的应用。从简单的打印机任务队列到复杂的图遍历算法(如BFS),队列都发挥着关键作用。通过实现队列的基本操作(如入队、出队、判断是否为空或满),我们可以轻松地将队列用于各种实际问题中。在C语言中,我们可以使用数组或链表来实现队列,具体实现方式取决于具体需求(如是否需要动态调整队列大小)。原创 2024-06-09 21:24:18 · 596 阅读 · 0 评论 -
【数据结构】栈的应用
详细讨论了栈在多个领域中的应用。反之,则依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,直到遇到低于他的优先级的运算符,才入栈。同时,如果函数内部调用了其他函数,系统也会为这些被调用的函数创建新的栈帧,并将当前函数的执行状态压入栈中保存。③遇到界限符,若为左括号直接入栈,若为右括号,则依次弹出栈中的运算符,加入后缀表达式,知道弹出左括号为止。如果扫描到运算符,则从栈中弹出两个操作数(先弹出的为右操作数,后弹出的为左操作数),将这两个操作数作为运算符的输入进行运算,然后将结果压回栈中。原创 2024-06-08 19:41:06 · 1438 阅读 · 0 评论 -
【数据结构】栈(详解)
数据结构中的栈(Stack)是一种特殊的线性表,其特殊性在于它只能在一端进行插入和删除操作,这一端被称为栈顶,另一端则被称为栈底。栈遵循“后进先出”(Last In First Out,LIFO)的原则,即最后一个被放入栈中的元素总是第一个被取出。在编程中,栈常用于实现函数调用、表达式求值、数制转换、迷宫求解等算法。例如,在函数调用中,每调用一个函数,就将该函数的局部变量和返回地址压入调用栈中,当函数返回时,再从调用栈中弹出相应的数据。这种机制确保了函数调用的正确性和顺序性。原创 2024-05-12 22:30:36 · 796 阅读 · 0 评论 -
【数据结构】线性表的链式表示
底层存储空间:顺序表使用一块连续的内存空间来存储元素,并通过下标来访问和操作元素。而链表则不同,它的各个节点在物理存储上并不连续,而是通过指针或引用进行连接。插入和删除操作:由于顺序表是连续存储的,因此在插入或删除元素时,可能需要移动其他元素以保持顺序。这种操作的时间复杂度较高,通常为O(n)。而链表在插入或删除元素时,只需要修改相关节点的指针或引用,无需移动大量元素,因此效率较高,时间复杂度通常为O(1)。随机访问:顺序表支持随机访问,即可以通过下标直接访问任意位置的元素,具有快速的随机访问能力。原创 2024-05-10 23:00:24 · 770 阅读 · 1 评论 -
【数据结构】线性表的顺序表示
顺序表是用一组连续的存储单元依次存储线性表中的数据元素,从而实现逻辑上两个相邻的数据元素在物理位置上也相邻。顺序表的逻辑顺序与物理顺序相同。如果知道第一个顺序表的起始地址LOC(a1),及每个元素所占内存空间大小sizeof(ElemType),即可得出线性表中所有数据元素的地址。ElemType的含义为所定义元素的类型。易混淆:线性表中元素的位序是从1开始的,而数组中的元素的下标是从0开始的。原创 2024-05-09 15:26:27 · 300 阅读 · 0 评论