美文网首页工作生活C++和数据结构
栈的定义和C++实现,最土逼的做法。好理解啊。

栈的定义和C++实现,最土逼的做法。好理解啊。

作者: 朱宏飞 | 来源:发表于2019-07-02 22:24 被阅读0次

栈的定义:

栈(stack)是限定仅在表尾进行插入和删除操作的线性表。注意他的特点(先进后出);

具体地理解:栈首先是个线性表,栈元素之间含有线性关系,前驱后继的关系。

---------------------------------------------------------------------------------------------------------------------------

这两天有点害怕数据结构了,可以听懂,但是让我编写我却编不出来。这是最操蛋的。

一定要知行和一。加油。我可以的。

-----------------------------------------------------------------------------------------------------------------------------

数据结构对栈的定义:

typedef int SElemType;  这句话常用 相当于给int起了个别名叫做SElemType。

typedef struct{

SElemType data[MAXSIZE];

int top;    //用于栈顶指针

}SqStrack;  

操作:进栈操作,插入元素

Status Push (SqStrack *S,SElemType e){

          if(S->top==MAXSIZE-1){

             return -1;//mistake

         }

S->top++;   //栈顶指针增加1

S->data[S->top]=e;//将新插入元素赋值给栈顶空间

return OK;

}

操作:出栈操作 

//若栈不空,删除S的栈顶元素,用e返回其值,并返回ok,否则返回-1;

Status Pop (SqStrack *S,SElemType * e){

          if(S->top==-1){

             return -1;//mistake

         }

*e=S->data[S->top];  将要删除的栈顶元素赋值给e

S->top--;   //栈顶指针增加1

return OK;

}

-----------------------------------------------------------------------------------------------------------

详细代码C++

#include<iostream>

#define SIZE 10

#define ERROR -1

using namespace std;

//栈的结构体定义

struct SqStack{

int *top;//栈顶指针

int *low;//栈底指针

int size;//栈的当前容量大小

};

//初始化栈

void Init(SqStack &s){

s.low=new int [SIZE];

if(!s.low) exit ERROR;

s.top=s.low;//这里使得栈顶指针和栈底指针指向同一个地址

s.size=SIZE;//定义栈的容量为100

}

//栈的操作,压入

int Push(SqStack &s,int e) {

if(s.top-s.low>s.size)//栈满 ,我们报错

{

cout <<"栈满"<<endl;

return ERROR;

}

*s.top=e;

s.top++;//栈顶指针加1

return 1;

}

//栈的操作取出栈顶元素,并删除栈顶

int Pop(SqStack &s,int &e)

{

if(s.top==s.low)

    return 0;

s.top--;//top先减去1,然后再去取元素

e=*s.top;

return 1;

}

//判空

int IsEmpty(SqStack s)

{

if(s.top==s.low)

    return 1;

else

    return 0;

}

void Destroy(SqStack &s) //销毁栈

{

delete s.low;

}

int main(){

SqStack slist;

Init(slist);

cout<<"请输入一串数字:"<<endl;

int e;

while(cin>>e){

Push(slist,e);

cout<<e<<" ";

}

while(!IsEmpty(slist))

{

Pop(slist,e);

cout<<e<<" ";

}

Destroy(slist);

return 0;

}

相关文章

  • 栈的定义和C++实现,最土逼的做法。好理解啊。

    栈的定义: 栈(stack)是限定仅在表尾进行插入和删除操作的线性表。注意他的特点(先进后出); 具体地理解:栈首...

  • 数据结构-其他线性结构(栈和队列)

    大纲:*掌握栈的定义、栈的存贮结构及基本操作的实现。理解用栈实现表达式的求值,递归过程及实现。掌握队列的定义、存贮...

  • Lua和C交互的简易教程

    Lua栈 要理解Lua和C++交互,首先要理解Lua堆栈。简单来说,Lua和C/C++语言通信的主要方法是一个无处...

  • 34_栈的概念及实现(上)

    关键词:栈的定义、栈的操作、栈的实现、StaticStack.h的实现 0. 栈的定义 栈是一种特殊的线性表 栈仅...

  • 5.栈Stack

    目录:1.栈的定义2.栈的图解3.栈定义操作4.栈的实现 1. 栈的定义 2. 栈的图解 3. "栈"定义的操作 ...

  • 实 验 四 栈和队列

    一、实验目的与要求:## 1、理解栈和队列抽象数据类型。 2、掌握栈和队列的存储结构和操作实现。 3、理解栈和队列...

  • 数据结构-栈(实现简单的数学运算)

    今天学习一个简单的数据结构知识:栈,并使用栈来实现简单的四则运算。 栈介绍 栈可以理解成先进后出的队列,最容易理解...

  • C++ 经典算法集锦 二

    C++经典算法实现系列2 上回我们说道,牛逼的C++可以实现很多牛逼的算法。我们继续之前的记录。 Algorith...

  • 数据结构与算法第四讲 - 栈

    本讲内容 栈的定义栈的操作栈的实现栈的应用 问题引入:思考一下浏览器的前进和后退功能有什么特征?是怎么实现的? 页...

  • C++语言实现顺序栈

    C++语言实现顺序栈 在写C语言实现顺序栈的时候,我已经向大家介绍了>栈的特点以及介绍了栈的相关操作,并利用C语言...

网友评论

    本文标题:栈的定义和C++实现,最土逼的做法。好理解啊。

    本文链接:https://www.haomeiwen.com/subject/mueacctx.html