数据结构
文章平均质量分 83
he626shidizai
这个作者很懒,什么都没留下…
展开
-
顺序表的c++实现
头文件:#ifndef ORDERLIST_H_INCLUDED#define ORDERLIST_H_INCLUDEDtypedef int ElemType;typedef struct{ ElemType *data; int maxsize; int length;}SqList;void InitList(SqList &L, int n); //初...原创 2019-03-05 20:15:03 · 382 阅读 · 0 评论 -
利用栈实现中缀表达式转换为后缀表达式
相关概念中缀表达式就是我们平时最熟悉的算式表达式,操作符在两个数中间。那么可以想到后缀表达式就是操作符在两个数后面。例子:中缀表达式:1 + 2 * 3后缀表达式:1 2 3 * +算法过程栈中存储的是操作符和括号。从左到右遍历中缀表达式。遇到括号遇到左括号,进栈遇到右括号,一直出栈,直到出栈的元素是右括号遇到数字直接输出遇到操作符遇到比除‘’('外栈顶运算符...原创 2019-05-06 20:41:39 · 3411 阅读 · 0 评论 -
利用栈计算后缀表达式
后缀表达式的概念后缀表达式又称作逆波兰式,操作符在运算数的后面,所以叫做后缀表达式。例如 1 + 2 * 3的后缀表达式是 1 2 3 * + 。可以 2 3 *看作一个运算数a, 1 a * 也符合运算数 运算数 操作符的格式。怎么利用栈计算当遇到运算数,进栈遇到操作符 $,从栈中弹出两个运算数a 、b, 计算 b $ a 的结果,结果进栈读取玩后缀表达式后,栈中只有一个元...原创 2019-05-06 19:57:29 · 1132 阅读 · 0 评论 -
利用栈实现括号匹配 c++
对于一个括号的序列,例如 {[()]} ,当我们从左向右遍历时,如果要确定右括号所对应的左括号是否存在,就需要将左括号记录下来,并且要做到最先记录的符号的最后被匹配,那么最合适的数据结构就是栈了。算法过程遇到一个左括号,进栈遇到一个右括号,判断其与栈顶元素是否匹配,如果不匹配,则返回0标识失败当遇到’ \0’ 时遍历完括号串,这个时候判断栈是否为空,非空返回0,空返回1标识成功代码...原创 2019-05-06 19:38:04 · 4081 阅读 · 2 评论 -
栈的链表实现
通过带有头节点的单链表来实现栈。我们通过在链表的表头插入来实现push,删除表顶端元素实现pop,top操作只是返回表顶端元素,空栈时只有一个头节点。stack.h#ifndef STACK_H_INCLUDED#define STACK_H_INCLUDEDtypedef int ElementType;struct Node;typedef struct Node *PtrTo...原创 2019-04-20 15:57:01 · 1271 阅读 · 0 评论 -
栈的数组实现
最好不要将数组和栈顶位置声明为全局变量,因为可能潜在地存在很多栈,这对于所有的ADT都适用。用一个数组实现栈是十分简单的,每一个栈有一个栈顶位置(实际上是数组的下标)TopOfStack,栈空时TopOfStack == -1。要将一个元素入栈,我们只需要TopOfStack + +, 然后S->Arrar[TopOfStack] = X即可。出栈时只需要使TopOfStack –对于数...原创 2019-04-20 15:49:54 · 2145 阅读 · 0 评论 -
栈
栈的概念栈(stack)是限制插入和删除只能在一端的线性表,该位置叫做栈的顶(top)。对栈的基本操作有个进栈(push)和出栈(pop)。最后插入的元素可以通过top()函数来访问。栈也被叫做后进先出(LIFO,last in first out)表。下图展示了一个栈的抽象模型。一般的模型是,存在某个元素在栈顶,而该元素是唯一的可见元素。栈的实现栈的应用平衡符号以括号匹配为...原创 2019-04-20 15:29:22 · 133 阅读 · 0 评论 -
队列的链表实现 C
参考:数据结构与算法分析 --C语言描述使用链表来实现队列的时候,就不存在队满的情况了,入队就是在一端加入一个节点,出队就是在另一端删除一个节点。当然队首在链表的首或者尾都无所谓,但是最好在队首,那么入队就是使用的头插法建立链表。特别注意,当队列中只有一个元素时出队,rear指针要修改为指向头节点。代码队首在链表首,建立头节点。queue.h#ifndef QUEUE_H_INCLUD...原创 2019-05-02 12:03:41 · 742 阅读 · 2 评论 -
队列的数组实现 C
参考:数据结构与算法分析 --C语言描述队列的实现有很多种,但是只要我们保证函数调用的效果相同那么怎么实现都无所谓。front和rear指针指向的问题队列有两个指针,头指针front和尾指针rear。使用数组实现队列的时候可以让front指向队列的第一个元素,rear指向队列的最后一个元素的下一个位置;也可以让front指向第一个位置的前一个位置,rear指向最后一个位置;也可以...原创 2019-05-02 11:46:28 · 1236 阅读 · 0 评论 -
链表---C实现(带头节点)
代码来自 数据结构与算法分析(C语言描述), 非原创头节点的作用是为了使每个节点的操作都相同,不必单独为第一个节点写特殊的操作。fatal.h#ifndef FATAL_H_INCLUDED#define FATAL_H_INCLUDED#include<stdio.h>#include<stdlib.h>#define Error(Str) F...原创 2019-04-04 20:25:59 · 180 阅读 · 0 评论 -
02-线性结构2 一元多项式的乘法与加法运算 C
链表都不知道咋写了,感觉写这个重点在于自己复习了一下单链表。其实写这个用了好久,遇到问题就死磕,不过收获还是蛮大的。碎碎念:其实写出来能运行之后调试花了很久,注意设置的四个测试点数据,每一个自己都举一个例子,就会出来了:其实我有一次测试第三个和第四个都出现了段错误,但是试了例子:01 2 1解决第四个之后第三个也可以得到正确答案了,所以不需要拘泥于顺序代码我会有详细注释,俗话说代...原创 2019-03-15 19:10:16 · 716 阅读 · 0 评论 -
求最大子列和(c实现)
参考:姥姥的数据结构课问题:求一个数列中最大子列和(子列中的元素在数列中互相挨着,空列也属于子列)基础解法(傻瓜方法):时间复杂度:O(n^3)一般我们看到问题首先想到的肯定是遍历。反正我一般想到的第一个是这样,而一般这种方法也不会是最简单的方法。int MaxSubseqSum(int a[], int n){ int this_sum; int max_sum = 0; fo...原创 2019-03-10 15:10:29 · 442 阅读 · 1 评论 -
02-线性结构1 两个有序链表序列的合并完整实现 c
实验平台:pta https://pintia.cn/#include<stdio.h>#include<stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};type...原创 2019-03-14 15:37:50 · 197 阅读 · 0 评论 -
顺序表的倒置,删除区间内元素,删除指定元素 c++
本博客来自最近学习的一些总结,取我认为的最佳算法,如果大家有更好的算法希望可以分享。以备日后使用,长期更新配套的顺序表实现:https://blog.csdn.net/he626shidizai/article/details/88201157将整个顺序表倒置:void Reverse(SqList &amp;amp;amp;L){ ElemType temp; for(int i = 0; i &amp;amp;lt...原创 2019-03-06 20:16:01 · 531 阅读 · 0 评论 -
线性表
线性表是数据结构中最简单的一类逻辑结构。线性表是许多常用数据结构的基础,例如栈、队列。线性表可以基于两种存储结构:顺序存储 – 顺序表链式存储 – 链表线性表的逻辑特性:除了第一个元素,每个元素有且仅有一个直接前驱;除了最后一个元素,每个元素有且仅有一个直接的后继。这也是线性表和其他逻辑结构区分开的一个特性。...原创 2019-03-06 19:54:19 · 216 阅读 · 0 评论 -
数组元素右移 c++实现
例:整数数组 1 2 3 4 5 右移两位 得到 4 5 1 2 3算法实现:将整个数组倒置 5 4 3 2 1分别将前两个元素和后三个元素倒置时间复杂度 O(n)void Reverse(int a[], int left, int right){ int temp; for(int i = 0; i &lt; (left + right + 1) /2 - left; i...原创 2019-03-08 19:28:59 · 938 阅读 · 0 评论 -
二叉查找树 c
目录递归定义 头文件实现文件1. 结构体定义2. 查找函数3. 查找关键值最小的结点4. 查找关键值最大的结点5. 插入函数6. 删除函数7. 其他函数(MakeEmpty,Retrive)二叉查找树的递归定义二叉查找树(Binary Search Tree, BST),在不同的书上我发现也可以叫二叉搜索树,二叉排序树。二叉树的一个重要应用就是在查找中的应用,现在我们...原创 2019-05-23 16:32:18 · 347 阅读 · 0 评论