• 20201012 千锤百炼软工人


    今天实现了一个栈

    是上课老师给的一道考研题目 两栈共享

    #include<iostream>
    #include<stdlib.h>
    #include<conio.h>
    #include<string.h>
    #define OK 1
    typedef int SElemType;
    using namespace std;
    typedef struct
    {
    int top[2],bot[2]; //栈顶和栈底指针//
    int m; //最大容纳个数//
    SElemType *V; //栈数组//
    }DblStack;
    void InitStack(DblStack &s,int i)
    {
    s.V = new int[s.m];
    s.m=i;
    s.top[0]=0;
    s.top[1]=s.m-1;
    cout<<"初始化成功!"<<endl;
    }
    void Dblpush(DblStack &s,SElemType x,int i)
    {
    if(i<0||i>1)
    {
    cout<<"i输入数值错误!"<<endl;
    }
    else
    {
    if(s.top[0]==s.top[1]+1)
    {
    cout<<"栈满!"<<endl;
    }
    else
    {
    if(i==0)
    {
    *(s.V+s.top[i])=x;
    s.top[i]++;
    cout<<"插入成功!"<<endl;
    }
    if(i==1)
    {
    *(s.V+s.top[i])=x;
    s.top[i]--;
    cout<<"插入成功!"<<endl;
    }
    }
    }
    }//把x插入到栈i中//
    int Dblpop(DblStack &s,int i,SElemType &x)
    {
    if(i<0||i>1)
    {
    cout<<"i输入数值错误!"<<endl;
    return 0;
    }
    else
    {
    if(i==0)
    {
    if(s.top[0]==0&&s.top[1]!=0)
    {
    cout<<"栈空"<<endl;
    return 0;
    }
    else
    {
    SElemType *p;
    x=*(s.V+s.top[i]);
    p=(s.V+s.top[i]);
    delete p;
    s.top[i]--;
    return x;
    }
    }
    if(i==1)
    {
    if(s.top[1]==s.m&&s.top[0]!=s.m)
    {
    cout<<"栈空"<<endl;
    return 0;
    }
    else
    {
    SElemType *m;
    x=*(s.V+s.top[i]);
    m=(s.V+s.top[i]);
    delete m;
    s.top[i]++;
    return x;
    }
    }
    }
    }//退掉位于栈i栈顶的元素//
    int IsEmpty(DblStack s,int i)
    {
    if(i==0||i==1)
    {
    if(i==0)
    {
    if(s.top[0]==0) return 1;
    else return 0;
    }
    if(i==1)
    {
    if(s.top[1]==s.m) return 1;
    else return 0;
    }
    }
    else{
    cout<<"i值错误!"<<endl;
    return 0;
    }
    }//判栈i空否, 空返回1, 否则返回0//
    int IsFull(DblStack s)
    {
    if(s.top[0]+1==s.top[1])
    {
    cout<<"栈满!"<<endl;
    return 1;
    }
    else
    {
    cout<<"未满!"<<endl;
    return 0;
    }
    }//判栈满否, 满返回1, 否则返回0
    void print(DblStack &s,int i)
    {
    if(i<0||i>1)
    {
    cout<<"i输入数值错误!"<<endl;
    }
    else
    {
    if(i==0)
    {
    for(int j=0;j<s.top[i];j++)
    {
    cout<<*(s.V+j)<<endl;
    }
    }
    if(i==1)
    {
    for(int j=s.m-1;j>s.top[i];j--)
    {
    cout<<*(s.V+j)<<endl;
    }
    }
    }
    }
    int main()
    {
    DblStack h;
    int a,b,c,d,e,f,g;
    InitStack(h,6);
    Dblpush(h,1,0);
    Dblpush(h,2,0);
    Dblpush(h,5,1);
    Dblpush(h,6,1);
    print(h,0);
    cout<<endl;
    print(h,1);
    Dblpop(h,0,b);
    Dblpop(h,1,e);
    cout<<endl;
    print(h,0);
    cout<<"第二个"<<endl;
    print(h,1);
    }

     

  • 相关阅读:
    Alpha 冲刺 (1/10)
    项目需求分析答辩总结
    项目选题报告答辩总结
    项目UML设计(团队)
    第七次作业--项目需求分析(团队)
    第六次作业--结对编程第二次
    Alpha 冲刺 (4/10)
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
  • 原文地址:https://www.cnblogs.com/huangmouren233/p/13805506.html
Copyright © 2020-2023  润新知