算法
文章平均质量分 56
Wild_Pointer.
在校大学生,热爱写bug
展开
-
数据结构:顺序栈
顺序栈(Sequential Stack)是一种使用数组来实现的栈数据结构。栈是一种后进先出(Last In First Out, LIFO)的数据结构,只允许在栈顶进行数据的添加(push)和删除(pop)操作。如果栈已满,这可能会触发数组的扩展(如果使用动态数组):移除栈顶的元素,并返回它。:元素只能从栈顶添加或移除,这保证了最后添加的元素将是第一个被移除的。:在栈满时,如果使用动态数组,可以自动扩展数组的大小以容纳更多元素。:顺序栈通常使用一个固定大小或动态大小的数组来存储栈中的元素。原创 2024-06-07 19:35:03 · 363 阅读 · 0 评论 -
数据结构:顺序串
在顺序串中,字符串被存储在一个连续的内存块中,通常是数组或动态数组(如C++中的。顺序串的主要优点是它提供了一种简单且高效的方式来访问和修改字符串中的字符。:由于字符串存储在数组中,任何字符都可以在常数时间内被访问,即O(1)时间复杂度。:在需要频繁访问和修改字符串的场景下,顺序串提供了一种高效的数据结构。:可以在字符串的任何位置插入字符,但可能需要移动插入点后的所有字符。:可以从字符串中删除任何字符,但可能需要移动删除点后的所有字符。:字符串的所有字符都存储在连续的内存位置,这有助于提高访问速度。原创 2024-06-07 19:25:12 · 371 阅读 · 0 评论 -
数据结构:线索二叉树
线索二叉树(Threaded Binary Tree)是一种对普通二叉树的扩展,它通过在树的某些空指针上添加线索来实现更高效的遍历操作。线索二叉树的目的是减少查找特定节点(如前驱或后继节点)所需的时间,从而提高树的搜索效率。:每个节点的前驱是其在中序遍历中直接前的一个节点,后继是直接后的节点。线索二叉树允许我们通过线索快速找到这些节点。:在二叉树的空指针(左子树或右子树的指针)上添加线索,这些线索可以指导我们找到节点的前驱或后继。:线索二叉树是基于普通二叉树的,它保留了二叉树的所有性质。原创 2024-06-07 19:11:00 · 501 阅读 · 0 评论 -
数据结构:哈夫曼树及其哈夫曼编码
哈夫曼树(Huffman Tree)是一种特殊的二叉树,由David A. Huffman在1952年发明的,用于数据压缩领域。它将每个字符映射为一个唯一的二进制串,这些二进制串的长度不同,且是根据字符出现频率来确定的。频率越低的字符,其编码越长。:从根节点开始,向左子树走标记为0,向右子树走标记为1,直到到达叶节点,此时叶节点对应的字符的路径标记就是其哈夫曼编码。2.从队列中取出两个权重最小的节点,创建一个新的内部节点,其权重为这两个节点权重之和。:所有叶节点的权重乘以其到根节点的距离之和是最小的。原创 2024-06-07 19:11:35 · 2014 阅读 · 0 评论 -
数据结构:共享栈
共享栈(Shared Stack)是一种内存管理技术,通常用于操作系统和编程语言的运行时环境中,以支持多线程或多进程的程序。:在多线程环境中,线程切换时可以更快速地保存和恢复执行状态,因为所有线程都使用同一个栈。:操作系统或运行时环境可以更简单地管理内存,因为它们只需要维护一个共享的栈结构。:共享栈的使用需要考虑到安全性问题,确保一个线程的操作不会破坏其他线程的数据。:共享栈可以减少内存的使用,因为它避免了每个线程或进程都需要自己的栈空间。原创 2024-06-06 23:13:09 · 249 阅读 · 0 评论 -
数据结构:单链表
/定义函数InitList用于初始化不带头结点的单链表//定义函数CheckList用于查看不带头结点的单链表是否为空//定义函数InitNodeList用于初始化带头结点的单链表//定义函数CheckNodeList用于查看带头结点的单链表是否为空//定义函数CheckOrder用于遍历链表查找结点并判空//定义函数InsertNextNode用于在指定结点进行后插操作//定义函数ListDelete用于按位序删除数据//定义函数NodeDelete用于指定结点删除数据。原创 2024-06-05 20:03:22 · 630 阅读 · 0 评论 -
数据结构:顺序表
顺序表的实现通常依赖于数组。:在顺序表中插入或删除元素可能需要移动其他元素以维持元素的连续性,这通常会导致较高的时间开销(O(n))。:顺序表通过数组实现,数组中的每个元素都紧密排列在内存中,这意味着可以通过索引快速访问任何元素。:顺序表利用了空间局部性原理,即访问过的元素附近的元素很可能也会被访问,这可以提高缓存利用率。:顺序表可以是静态的,即其大小在创建时就固定,也可以是动态的,即其大小可以根据需要调整。:由于顺序表基于数组,它支持随机访问,即可以在O(1)时间复杂度内访问任何位置的元素。原创 2024-06-04 19:01:08 · 532 阅读 · 0 评论 -
数据结构:链式队列
链式队列,指的是使用链表实现的队列,是一种常见的数据结构。队列遵循先进先出(FIFO)的原则,即最先进入队列的元素将是最先被移除的元素。链式队列通过链表的动态特性来实现队列的插入和删除操作,提供了比静态数组实现的队列更高的灵活性。: 链式队列需要维护两个指针:队首指针(指向队列的第一个元素)和队尾指针(指向队列的最后一个元素)。: 由于链式队列的元素是动态添加的,因此需要使用动态内存分配来创建新的节点。: 链式队列由一系列节点组成,每个节点通常包含两个部分:数据部分和指向下一个节点的指针原创 2024-06-03 22:50:30 · 637 阅读 · 0 评论