- stm32在oled上实现多级菜单(基于链表)
为了提高OLED显示多级菜单的易用性,手搓了基于链表的多级菜单的代码。主要有如下特点:1:需要配置地方少,后续新加菜单只需在初始化的时候添加,以及自己实现按键事件的回调函数即可。2:事件驱动,按键事件通过队列接收。因此,整个过程中,重写按键程序,消息队列,以及多级菜单框架。复习下双......
- 链表详解
C++中的链表是一种数据结构,用于存储一系列元素,每个元素都包含一个值以及一个指向下一个元素的指针。链表可以分为单向链表和双向链表,其中单向链表每个节点只有一个指向下一个节点的指针,而双向链表每个节点有一个指向下一个节点和一个指向前一个节点的指针。以下是关于C++链表的详......
- 【剑指Offer】15、反转链表
【剑指Offer】15、反转链表题目描述:输入一个链表,反转链表后,输出新链表的表头。解题思路:本题比较简单,有两种方法可以实现:(1)三指针。使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。将指针反转后,三个结点依次前移即可。(2)递归方法。同样可以采用递归来实现......
- Redis的五大数据类型的数据结构
概述 Redis底层有六种数据类型包括:简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。这六种数据结构五大数据类型关系如下:String:简单动态字符串List:双向链表、压缩列表Hash:压缩列表、哈希表SortedSet:压缩列表、跳表Set:哈希表、整数数组 ......
- 剑指Offer 35. 复杂链表的复制
题目链接:剑指Offer35.复杂链表的复制题目描述:请实现copyRandomList函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个next指针指向下一个节点,还有一个random指针指向链表中的任意节点或者null。解法思路:遍历整个链表,在每个节点的后面,插入一个当前节点的复制,......
- 【数据结构】表达式计算 - 栈
表达式与栈栈的一大用处是做算术表达式的计算。——李煜东栈是一种基础的线性数据结构,在计算机科学与OI中有许多运用。CCFCSP-J复赛曾两年(2020,2022)考察表达式计算与表达式树,三种表达式之间的转换也是初赛常见考点。表达式计算在计算机科学中,算术表达式有以下三种常见......
- HashMap链表树化究竟是怎样的?
网上一直看到两种说法:1.数组长度大于64且当链表长度>8时,链表转换为红黑树;2.数组长度大于64且当链表长度≥8时,链表转换为红黑树。 上源码,主要是putVal()函数/***ImplementsMap.putandrelatedmethods.**@paramhashhashforkey*@paramkeythekey*@par......
- 一数据结构
1、数据结构(datastructure)是带有结构特性的数据元素的集合,“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储结构。 2、逻辑结构包括: 1)集合:数据结构中的元素之间除了“同属一个集合”的相互关系外,别无其他关系2)线性结构:数据结构中的元素存在一对一的相互关系3)树......
- 手撕代码之链表
文章目录一、反转链表(leetcode206)二、两个链表的交点(leetcode160)三、链表的中间结点(leetcode876)四、判断链表是否存在环(leetcode141)五、输出链表环的入口结点(leetcode142)六、删除链表中倒数第k个节点(leetcode19)七、合并两个排序链表(leetcode21)八、O(1)时间删除链表中的一个......
- 快排及链表排序
文章目录一、普通的快排二、链表的创建三、链表的冒泡排序四、链表快排五、链表归并排序一、普通的快排voidQuickSort(vector<int>&vec,intlow,inthigh){ intpivot=vec[low];//选择第一个元素作为枢纽元 //mid总是指向最后一个比枢纽元小的位置,当需要交换元素时,先......