数据结构与算法
文章平均质量分 81
常见数据结构,以及一些算法的实现。
Axyzstra
这个作者很懒,什么都没留下…
展开
-
动态规划:钢条切割问题
如上图所示:切割长度为 4 的钢条会求 3 2 1 钢条的最优解,但是每个求最优解都是独立的,这样会导致大量的重复。动态规划就是为了解决这样的问题。通过以上步骤可以得知,动态规划的关键在于找到重复子问题,然后利用数组来存放重复子问题。以上为记住最大价格的方法,减少了很多次重复计算;可见,通过计时,快了 13 倍不止;即求具体的钢条切割方案。参考资料:《算法导论》原创 2024-07-11 10:50:02 · 720 阅读 · 0 评论 -
按数组顺序创建一个完全二叉树
按照数组顺序插入到二叉树中参考文章数组与二叉树的对应关系:一个结点在数组中的序号为 i,则其左孩子结点序号为 2 * i,右孩子结点序号为 2 * i + 1;根据这条关系,我们可以建立个按照数组顺序的二叉树;/*将数组 arr 按照顺序建立二叉树,i 为当前插入元素在数组中的位置,n 为数组元素个数,root 为本次插入的结点地址;这个函数的左右是将数组中 arr[i] 元素插入到地址为 root 的位置上,那么结点 root 的左孩子结点插入元素为 arr[2 * i],右孩子结点插入元素为原创 2022-02-14 21:39:56 · 2509 阅读 · 0 评论 -
循环队列 C++ 实现
因此可以得出结论,入队列时,在队列未满时,元素入队,队尾元素。为解决假溢出问题,采用循环队列,循环队列即一种逻辑上的环状结构,但在物理空间上仍然为顺序存储,即数组。测试方案依次入队列至如下情况,此时将不能入队列,rear=7,front=0;出队列四次,入队列五次,此时队列已满;入队列代码size=MAX时队列已满,不能入队列;出队列四次,入队列两次,此时队头为4,队尾指针为1;表示队列已满,若队列未满,则入队列,入队列后若。表示队列已空,若队列未满,则入队列,出队列后若。...原创 2022-07-25 17:34:47 · 3620 阅读 · 0 评论 -
数据结构 栈的顺序和链式结构 C++实现
顺序存储结构的栈栈的定义const int MAXSIZE = 50;typedef int Elemtype;typedef struct{ Elemtype data[MAXSIZE]; int top;} SqStack;栈的初始化令栈顶指针 top 为 -1 即可;void InitStack(SqStack &S) { S.top = -1;}判断栈空bool StackEmpty(SqStack S) { if(S.top原创 2022-03-30 22:29:59 · 1826 阅读 · 0 评论 -
KMP 算法中的 next 数组推导(图解 + 代码实现)
KMP 算法中对 next 数组的理解next 数组的意义此处 next[j] = k;则有 k 前面的浅蓝色区域和 j 前面的浅蓝色区域相同;next[j] 表示当位置 j 的字符串与主串不匹配时,下一个需要和主串比较的字串位置在 next[j] 处;有下图:若当前位置 j 与主串某一个字符不匹配,则下一次比较的是 K 与主串的当前位置,这个 K 也就是next[j];由于两个浅蓝色区域相同,因此 K 前面的区域肯定与主串相同,不需比较;如下图:由上图可知,K 前面的区域不需比较;next原创 2022-06-05 17:39:04 · 2634 阅读 · 3 评论 -
数据结构 单链表 C++ 实现
单链表单链表的定义typedef int ElemType;typedef struct LNode { ElemType data; LNode *next;} LNode, *LinkList;此处 LNode 强调一个结点,*LinkList 强调一个单链表的头指针,本例中只有头指针使用 *LinkList ;单链表的头指针和头节点若单链表没有头节点,那么单链表的头指针则指向链表的第一个元素;若由头节点,头指针指向头节点;例如头指针为 L;如果链表为空,则有 L ==原创 2022-03-25 10:26:39 · 3479 阅读 · 0 评论 -
数据结构 顺序表 C++实现
顺序表此处实现的顺序表为**第一个位置为 data[0] **的顺序表顺序表的定义为const int MAX = 50;typedef int ElemType;typedef struct { ElemType data[MAX]; int length;} SeqList; //data[0] 为第一个元素顺序表元素的插入在顺序表 L 位置 i 处插入元素 e需要注意的几个点:插入元素,插入位置范围为 1 ~ length +原创 2022-03-21 18:20:57 · 1230 阅读 · 0 评论