zoukankan      html  css  js  c++  java
  • 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);
    }

     

  • 相关阅读:
    暂存。2
    暂存。
    dom兼容性问题3 元素操作
    一个查看Access数据库密码的工具
    解除IIS配置节锁定
    解决cef中title不现实tooltip的问题
    创建.symlnk文件
    查询orcale运行的SQL语句记录
    跨域http头
    C#抓取天气数据
  • 原文地址:https://www.cnblogs.com/huangmouren233/p/13805506.html
Copyright © 2011-2022 走看看