数据结构之队列和栈学习笔记

本文介绍了栈和队列这两种基本数据结构的特点与实现方法,并通过示例代码详细讲解了栈的创建及基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天学习了队列和栈(当然还有哈希表,不过暂且不表),由于队列与栈的类似性故放在一块讲。

队列和栈与链表不一样在于其强调的不是存储单元间的关系而是存储后数据流动的一种形式,队列和栈恰好相互对应,一个是先进先出,一个是先进后出。一张图便能轻易掌握这两种数据结构的特点。说白了栈就像个桶,而队列就像个带开关的漏斗。
栈与队列示意图
废话不多说,直接上代码,以栈为例,通过栈1.0版来看栈的建立以及一些基本操作。队列则可举一反三得到。

#include<iostream>
#include<cassert> //提供assert
using namespace std;
template<class Type> class Stack{
   private:
      Type* data;
      int size,top_index;
   public:
       Stack(int input_length){
         data = new Type[input_length];
         size = input_length;
         top_index=-1;
      }
      ~Stack(){ delete[] data;}
      bool insert(const Type &value){
          if(top_index<size-1){
            data[++top_index]=value;
             return true;
           }
           else{ return false;}
       }
       bool pop(){
            if(isempty()){ return false;}
            else{  
                 top_index--;
                 return true;
             }
       bool isempty(){
             if(top_index<0){
                 return true;
               }
             else { return false;}
         }
       Type top(){
           assert(top_index>=0);
            return data[top_index];
         }
};

其中在学习的时候多出模板类的定义,这样在选择入栈的数据类型时也较Typedef更为方便。
代码依旧很简单,初级也很容易看懂,里面以数组为载体定义了出栈入栈判断是否为空以及得栈顶元素的基本功能,实现方式可能还有大的改善空间,不过也基本够用了…
继续 ps:如有不对的地方望广大高手批评指点。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值