数据结构--栈

1、栈的简介

1.1栈的特点

栈(Stack)是一种线性存储结构,它具有如下特点:

  1. 栈中的数据元素遵守”先进后出"(First In Last Out)的原则,简称FILO结构。
  2. 限定只能在栈顶进行插入和删除操作。

1.2栈的相关概念

栈的相关概念:

  1. 栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。
  2. 压栈:栈的插入操作,叫做进栈,也称压栈、入栈。
  3. 弹栈:栈的删除操作,也叫做出栈。

例如我们有一个存储整型元素的栈,我们依次压栈:{1,2,3}


在压栈的过程中,栈顶的位置一直在”向上“移动,而栈底是固定不变的。
如果我们要把栈中的元素弹出来:

栈的存储结构

栈既然是一种线性结构,就能够以数组或链表(单向链表、双向链表或循环链表)作为底层数据结构。
本文我们以数组、单向链表为底层数据结构构建栈。

#pragma once
#ifndef MYSTACK_H
#define MYSTACK_H
#include<iostream>
#include<string>
using namespace std;
class MyStack
{
public:
MyStack(int size);
~MyStack();
bool StackEmpty();
bool StackFull();
void clearStack();
int StackLength(); //已有元素的个数
bool push(char elem); //元素入栈,栈顶上升
bool pop(char &elem); //元素出栈,栈顶下降
void StackTraverse();//遍历栈中所有元素
private:
char *m_pBuffer;  //栈空间指针
int m_iSize;  //栈容量
int m_iTop;   //栈顶,栈中元素个数
};
#endif // !MYSTACK_H


在C++中使用STL源库栈
  1. #include<iostream>  
  2. #include<stack>  
  3. using namespace std;  
  4. int main(){  
  5.     stack<int>mys;  
  6.     mys.push(5);  
  7.     mys.push(3);  
  8.     mys.push(8);  
  9.     mys.push(4);  
  10.     mys.push(1);  
  11.     mys.push(2);  
  12.     mys.push(7);  
  13.     while(!mys.empty()){  
  14.         cout<<mys.top()<<" ";  
  15.         mys.pop();  
  16.     }  
  17.     cout<<endl;  
  18.     return 0;  
  19. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值