![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
栈和队列
苍之羽
喜欢C语言和Java
展开
-
栈的动态分配顺序存储的基本操作(top为指针且指向栈顶元素下一个位置)
一、栈的结构组成定义:#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK 1#define INIT_SIZE 10 /*栈的初始分配容量*/ #define INCREMENT 2 /*栈的分配量增量*/ typedef int Status;原创 2019-01-18 11:15:47 · 7854 阅读 · 1 评论 -
栈的链式存储的基本操作
1 :链式存储结构 栈的链式存储结构,简称链栈。 由于栈只是栈顶在做插入和删除操作,所以栈顶应该放在单链表的头部。另外,都有了栈顶在头部了,单链表中的头结点也就失去了意义,通常对于链栈来说,是不需要头结点的。 对于链栈来说,基本不存在栈满的情况,除非内存已经没有使用空间了。 对于空栈来说,链表原来的定义是头指针指向空,那么链栈的空其实就是top=NULL。#include<...原创 2019-01-21 14:42:12 · 2746 阅读 · 0 评论 -
循环队列的基本操作
为了解决顺序队列假溢出的问题,我们采用的方案是少用一个元素空间,此时的指针状态是队尾指针加1才与队头指针重合,于是此时队满的判定条件变为(rear+1)%MAXSIZE=front,队空的判定条件依然是front==rear,这样就能区分出来是队满还是队空状态了。一、循环队列的定义:#include<stdio.h>#include<stdlib.h>#includ...原创 2019-01-25 16:42:04 · 15074 阅读 · 2 评论 -
顺序队列的基本操作
顺序队列会发生假溢出的情况,具体运行情况请看效果截图,相关代码如下:一、顺序队列的定义:#include<stdio.h>#include<stdlib.h>#include<assert.h>#define E原创 2019-01-25 12:03:16 · 11526 阅读 · 2 评论 -
利用栈实现对后缀表达式(逆波兰表达式)的求解(C代码实现)
我们最熟悉的表达式:1+2,(1+2)3,3+42+4等等都是中缀表示法。对于人们来说,也是最直观的一种求值方式,先算括号里的,然后算乘除,最后算加减,但是,计算机处理中缀表达式却并不方便,因为没有一种简单的数据结构可以方便从一个表达式中间抽出一部分算完结果,再放进去,然后继续后面的计算。而逆波兰表达式则可以轻松解决这一问题。 逆波兰表达式: 逆波兰表达式又叫后缀表达式。它是由相应的语法树...原创 2019-01-20 15:51:38 · 10200 阅读 · 6 评论 -
利用栈实现十进制对二进制,八进制、十六进制的任意转换(N进制)
1、程序代码如下(利用栈的动态分配实现):#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK 1#define INITSIZE 10#define INCREMENT 2typedef int Status;typedef int Elemtype;ty原创 2019-01-19 20:43:47 · 25363 阅读 · 9 评论 -
利用栈进行二进制到八进制、十进制、十六进制的转换
1、二进制转八进制:/*二进制转八进制*/ #include<stdio.h>#include<stdlib.h>#include<math.h>#define MAXSIZE 20#define ERROR 0#define OK 1typedef int Status;typedef char El原创 2019-01-19 17:35:13 · 5520 阅读 · 1 评论 -
栈的静态分配顺序存储(top为整数且指向栈顶元素)
top为整数且指向栈顶元素,S->top=-1,具体入栈如下所示:一、栈的静态分配顺序存储结构描述:#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK 1#define MAXSIZE 10typedef int Elemtype;typedef int ...原创 2019-01-19 00:09:57 · 1015 阅读 · 1 评论 -
栈的静态分配顺序存储(top为整数且指向栈顶元素的下一个位置)
栈的顺序存储分为静态顺序存储和动态顺序存储,静态顺序存储的栈一次性分为配空间,但是不具备可扩重新,即在栈满后不能追加空间进行入栈操作。一、程序代码如下:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#define ERROR 0#define OK 1#define MAXSIZE 10typedef int E...原创 2019-01-18 23:31:21 · 1961 阅读 · 0 评论 -
链队列的基本操作
一、链队列的数据类型定义:#include<stdio.h>#include<stdlib.h>#include<assert.h> #define ERROR 0#define OK 1 #define TRUE 1#define FALSE 0typedef int Status;typedef int El...原创 2019-01-23 22:25:02 · 1243 阅读 · 0 评论 -
栈的动态分配顺序存储的基本操作(top为指针且指针指向栈顶元素)
一、栈的动态分配顺序存储的结构定义:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;assert.h&gt;#define ERROR 0#define OK 1#define INIT_SIZE 10 /*栈的初始分配容量*/ #define INCREMENT 2 /*栈的原创 2019-01-18 16:48:48 · 11276 阅读 · 3 评论 -
中缀表达式转换为后缀表达式(C语言代码+详解)
中缀表达式转换为后缀表达式1.创建栈2.从左向右顺序获取中缀表达式a.数字直接输出b.运算符情况一:遇到左括号直接入栈,遇到右括号将栈中左括号之后入栈的运算符全部弹栈输出,同时左括号出栈但是不输出。情况二:遇到乘号和除号直接入栈,直到遇到优先级比它更低的运算符,依次弹栈。情况三:遇到加号和减号,如果此时栈空,则直接入栈,否则,将栈中优先级高的运算符依次弹栈(注意:加号和减号属于同一个...原创 2019-01-22 14:53:22 · 82908 阅读 · 17 评论