美文网首页工作生活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++实现,最土逼的做法。好理解啊。

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