数据结构之栈与队列

author author     2022-08-29     154

关键词:

(本文参考《剑指offer》总结笔记,供学习使用)

  栈是一种常见的数据结构,在操作系统中会给每个进程创建一个栈来存储函数调用时各个函数的参数、返回地址以及临时变量等。栈的特点是后进先出。

   队列是另外一种很重要的数据结构,队列的特点是先进先出。


例:用两个栈实现队列

队列声明:
template <typename T> class CQueue
{
    public:
        CQueue(void);
        ~CQueue(void);
        
        void appendTail(const T& node);
        T deleteHead();
    private:
        stack<T> stack1;
        stack<T> stack2;
};

//使用两个栈模拟一个队列的操作
template<typename T> void CQueue<T>::appendTail(const T& element)
{
    stack1.push(element);
}
template<typename T> T CQueue<T>::deleteHead()
{
    if(stack2.size()<=0)
    {
        while(stack1.size()>0)
        {
            T& data=stack1.top();
            stack1.pop();
            stack2.push(data);
        }
    }
    if(stack2.size()==0)
        throw new exception("queue is empty");
    
    T head=stack2.top();
    stack2.pop();
    
    return head;
}


本文出自 “11773640” 博客,谢绝转载!

大话数据结构4之栈与队列

1. 栈是限定仅在表尾进行插入和删除操作的线性表。  队列是只允许在一端进行插入操作、而在另一端进行删除操作的线性表。2.我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈... 查看详情

sdut2449数据结构实验之栈与队列十:走迷宫(代码片段)

 数据结构实验之栈与队列十:走迷宫TimeLimit: 1000ms MemoryLimit: 65536KiBProblemDescription一个由n*m个格子组成的迷宫,起点是(1,1),终点是(n,m),每次可以向上下左右四个方向任意走一步,并且有些格子是不能走动,求从... 查看详情

sdut-2131_数据结构实验之栈与队列一:进制转换(代码片段)

...要求,栈和队列这一章我会用线性和非线性两种方式写。数据结构实验之栈与队列一:进制转换TimeLimit:1000msMemoryLimit:65536KiBProblemDescription输入一个十进制非负整数,将其转换成对应的R(2<=R<=9)进制数,并输出。Input第一行输入... 查看详情

sdut3332数据结构实验之栈与队列五:下一较大值(代码片段)

 数据结构实验之栈与队列五:下一较大值(一)TimeLimit: 1000ms MemoryLimit: 65536KiBProblemDescription对于包含n(1<=n<=1000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找... 查看详情

sdut-2449_数据结构实验之栈与队列十:走迷宫(代码片段)

数据结构实验之栈与队列十:走迷宫TimeLimit:1000msMemoryLimit:65536KiBProblemDescription一个由n*m个格子组成的迷宫,起点是(1,1),终点是(n,m),每次可以向上下左右四个方向任意走一步,并且有些格子是不能走动,求从起点到终点经过每... 查看详情

数据结构----栈与队列之栈的应用四则运算表达式求值

栈与队列之栈的应用四则运算表达式求值栈在四则运算表达式求值的应用为逆波兰表达式(后缀表达式)普通算式(中缀表达式):9+(3-1)*3+10/2  ---(1)逆波兰表达式(后缀表达式):931-3*+102/    ---(2... 查看详情

sdut-3335_数据结构实验之栈与队列八:栈的基本操作(代码片段)

数据结构实验之栈与队列八:栈的基本操作TimeLimit:1000msMemoryLimit:65536KiBProblemDescription堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push和pop。push一个值会将其压入栈顶,而pop则会将栈顶的值弹出。现在我们就来验证... 查看详情

sdut2088数据结构实验之栈与队列十一:refresh的停车场(代码片段)

 数据结构实验之栈与队列十一:refresh的停车场TimeLimit: 1000ms MemoryLimit: 65536KiBProblemDescription refresh最近发了一笔横财,开了一家停车场。由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多。... 查看详情

sdut-2088_数据结构实验之栈与队列十一:refresh的停车场(代码片段)

数据结构实验之栈与队列十一:refresh的停车场TimeLimit:1000msMemoryLimit:65536KiBProblemDescriptionrefresh最近发了一笔横财,开了一家停车场。由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多。当停车场满时,要进入... 查看详情

数据结构之栈与队列(代码片段)

栈 队列栈的实现 顺序表实现 classStack(object):"""栈"""def__init__(self):self.__list=[]#选用顺序表或链表defpush(self,item):"""压栈"""self.__list.append(item)#时间复杂度O(1)self.__list.insert(0,item)#头部插入,时间复杂度O(n)#说明:链表结构的... 查看详情

数据结构实验之栈与队列九:行编辑器(代码片段)

数据结构实验之栈与队列九:行编辑器Description 一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。  由于用户在终端上进行输入时,不能保证不出差错,因此,若在编辑程序... 查看详情

数据结构实验之栈与队列二:一般算术表达式转换成后缀式(代码片段)

数据结构实验之栈与队列二:一般算术表达式转换成后缀式Description对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。Input输入一个算术表达式,以‘#’字符作为结束标志。Output输出该表达式转换... 查看详情

算法习题---栈与队列之栈的数学性质(代码片段)

一:栈的数学性质当n个编号元素以某种顺序进栈,并且可以在任意时刻出栈,所获得的编号元素排列的数目N恰好满足Catalan函数的计算,即二:题目一:试着将1,2,3,4,5,6,六个数字入栈,则出栈方式有几种?使用数学性质可以知道... 查看详情

数据结构实验之栈与队列八:栈的基本操作(代码片段)

数据结构实验之栈与队列八:栈的基本操作Description堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push和pop。push一个值会将其压入栈顶,而pop则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。Input首先输入整... 查看详情

数据结构之栈和队列熬夜暴肝,有亿点详细(代码片段)

...去看看我上次写的线性表相信对你能有帮助。传送门->数据结构之线性表目录前言栈栈的定义顺序栈链栈队列队列的定义顺序队列循环队列链式队列栈与队列的应用双端队列栈的应用表达式求值括号匹配递归结语栈栈其实就是... 查看详情

数据结构之栈队列循环队列(代码片段)

二、数据结构之栈、队列、循环队列顺序栈Stack.h结构类型,函数声明:#ifndef_STACK_H_#define_STACK_H_typedefintSElementType;///顺序栈#defineSTACK_INIT_SIZE20#defineSTACK_INCREMENT10typedefstructSElementType*base;SElementType*top;intsta 查看详情

数据结构之栈和队列

    数据结构学习继续向前推进,之前对线性表进行了学习,现在我们进入栈和队列的学习。同样我们先学习一些基本概念以及堆栈的ADT.栈和队列是两种中重要的线性结构。从数据结构角度看,栈和队列也是线性... 查看详情

数据结构之栈和队列

 其实栈和队列是特殊的线性表,特殊之处在于插入和删除的位置受到限制,如果插入和删除只在一端进行,那么这就是栈,如果插入在尾部进行,删除在头部进行就是队列,下面我们具体来看看栈和队列的实现。1:栈定义... 查看详情