数据结构
文章平均质量分 52
XUN~MLF
这个作者很懒,什么都没留下…
展开
-
算法设计与实现--贪心篇
贪心算法是一种在每一步选择中都采取当前状态下最优决策的算法,以期望能够通过一系列局部最优的选择达到全局最优。贪心算法的关键是定义好局部最优的选择,并且不回退,即一旦做出了选择,就不能撤销。关键的两步提出贪心策略:观察问题特征,构造贪心选择证明贪心正确:假设最优方案,通过替换证明。原创 2023-12-03 21:07:35 · 296 阅读 · 0 评论 -
算法设计与实现--动态规划篇
动态规划算法是一种求解复杂问题的方法,通过将原问题分解为相对简单的子问题来求解。其基本思想是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。动态规划算法通常适用于有重叠子问题和最优子结构性质的问题,可以大大减少计算量。原创 2023-12-03 20:59:23 · 303 阅读 · 0 评论 -
算法设计与实现--分治篇
分治算法是一种常见的问题解决方法,它将一个复杂的问题划分为多个相同或相似的子问题,然后递归地解决这些子问题,最后将子问题的解合并得到原问题的解。:将原问题划分成多个相同或相似的子问题。这里的划分策略取决于具体问题的特性。:递归地解决子问题。对于规模较小的子问题,可以直接求解。:将子问题的解合并成原问题的解。这一步骤通常在递归的回溯过程中完成。分治算法的核心思想是将复杂的问题划分为规模更小的子问题,并通过递归地解决这些子问题来解决原问题。通过合并子问题的解,最终得到原问题的解。原创 2023-11-25 21:41:40 · 475 阅读 · 0 评论 -
数据结构代码题--头插法和尾插法的应用
头插法和尾插法原创 2022-08-19 22:15:25 · 1009 阅读 · 1 评论 -
数据结构代码题---寻找指定结点
寻找指定结点原创 2022-08-19 22:12:49 · 361 阅读 · 0 评论 -
数据结构代码题--单链表相关的操作(与线性表之间的对比和差别)
数据结构代码题,来自wangdao,单链表相关的删除操作,主要是带头结点的单链表原创 2022-08-16 22:27:24 · 415 阅读 · 0 评论 -
数据结构代码题--与线性表的相关删除操作
顺序表相关的删除操作原创 2022-08-14 22:57:13 · 1425 阅读 · 0 评论 -
数据结构代码题--线性表
考研数据结构代码题,线性表的逆置,三次逆置原创 2022-08-14 22:50:27 · 495 阅读 · 0 评论 -
栈的应用--括号匹配问题
算法思路:1、首先从左往右扫描各个括号2、如果出现左半括号,就将其压入栈中,3、如果扫描到右半括号,就将其和栈顶元素进行对比,3.1、如果栈空(没有栈顶元素),则匹配失败, 3.2、如果栈不为空,弹出栈顶元素,将栈顶元素和该右半括号进行比较,小括号匹配小括号,如果匹配失败,结束4、全部匹配完以后,判断栈是否为空,如果栈不为空,说明还有未匹配的左半括号,如果栈为空,说明括号匹配成功代码实现#include <stdio.h>/......原创 2022-05-06 17:28:20 · 4097 阅读 · 1 评论 -
队列的链式存储--不带头结点和带头结点
一、带头结点# include <stdio.h># include <stdlib.h>typedef struct LinkNode{ // 链队列结点 int data; struct LinkNode *next; }LinkNode; typedef struct LinkQueue{ // 链队列 LinkNode *front,*rear; // 队头指针和队尾指针 }LinkQueue;// 1、初始化 (带头结点)bool In原创 2022-05-06 15:23:37 · 1074 阅读 · 1 评论 -
栈的顺序存储和链式存储
一、顺序存储程序代码# include <stdio.h>// 顺序栈的定义 #define MaxSize 10typedef struct{ int data[MaxSize]; // 静态数组存放栈中元素 int top; // 栈顶指针 指向数组下标,从0开始 }SqStack;// 1、初始化bool InitStack(SqStack &S){ S.top = -1; // 初始化栈顶指针 return true;}原创 2022-05-06 14:05:28 · 340 阅读 · 0 评论 -
带头结点的双链表
完整的代码和测试结果在结尾!!1、双链表的结构typedef struct DNode{ // 双链表的结构 int data; struct DNode *prior,*next; // 前驱和后继指针}DNode,*DLinkList;2、双链表的初始化// 初始化bool InitDoubleLinkList(DLinkList &L){ L = (DNode *) malloc(sizeof(DNode)); // 开辟结点空间 L->prior原创 2022-05-04 17:03:51 · 1269 阅读 · 0 评论 -
带头结点的单链表
1、节点类型typedef struct LNode{ // 单链表的节点类型 int data; // 数据域 struct LNode *next; // 指针域 }LNode,*LinkList;2、初始化// 单链表初始化 (带头结点) bool InitList(LinkList &L){ L = (LNode*) malloc(sizeof(LNode)); // 分配一个头结点 L->next == NULL; // 头结点暂时还没有结点原创 2022-05-03 19:19:18 · 770 阅读 · 1 评论