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);
    }

     

  • 相关阅读:
    Python调用sqlAlchemy
    Docker容器管理及代码调用
    Spring设置动态定时任务
    多数据源实现读写分离
    Spring整合EHCache框架
    springBoot整合Redis
    初探Mybaties整合分页插件PageHelper(1)
    流程控制,循环结构,for,while循环
    变量,常量,格式化输入输出,运算符
    编程语言介绍,变量介绍
  • 原文地址:https://www.cnblogs.com/huangmouren233/p/13805506.html
Copyright © 2011-2022 走看看