• 数据结构之顺序栈的共享


    //将123456依次入栈,将45出栈,再将67进栈最后全部出栈依次输出
    #include<iostream>
    #include<stdio.h>
    #include<malloc.h>
    #include<stdlib.h>
    #define maxsize 100
    using namespace std;
    typedef struct node
    {
    int stack[maxsize];
    int top[2];
    }seqstack;

    void init(seqstack *s)
    {
    s->top[0]=0;
    s->top[1]=maxsize-1;
    }
    int empty(seqstack s,int flag)
    {
    switch(flag)
    {
    case 0:
    if(s.top[0]==0)
    return 1;
    break;
    case 1:
    if(s.top[1]==maxsize-1)
    return 1;
    break;
    default:
    return 0;
    }
    return 0;

    }
    int get(seqstack s,int *e,int flag)
    {

    switch(flag)
    {
    case 0:
    if(s.top[0]==0)
    {
    cout<<"栈1已空!";
    return 0;
    }
    *e=s.stack[s.top[0]-1];
    break;
    case 1:
    if(s.top[1]==maxsize-1)
    {
    cout<<"栈2已空!";
    return 0;
    }
    *e=s.stack[s.top[1]+1];
    break;
    default:
    return 0;
    }
    return 1;

    }


    int push(seqstack *s,int e,int flag)
    {
    if(s->top[0]==s->top[1])
    {
    cout<<"栈已满!";
    return 0;
    }
    switch(flag)
    {
    case 0:
    s->stack[s->top[0]]=e;
    s->top[0]++;
    break;

    case 1:
    s->stack[s->top[1]]=e;
    s->top[1]--;
    break;

    default:
    return 0;
    }

    return 1;

    }
    int pop(seqstack *s,int *e,int flag)
    {


    switch(flag)
    {
    case 0:
    if(s->top[0]==0)
    {
    cout<<"栈1已空!";
    return 0;
    }
    s->top[0]--;
    *e=s->stack[s->top[0]];
    break;

    case 1:
    if(s->top[1]==maxsize-1)
    {
    cout<<"栈2已空!";
    return 0;
    }
    s->top[1]++;
    *e=s->stack[s->top[1]];

    break;

    default:
    return 0;
    }


    return 1;

    }


    int length(seqstack s,int flag)
    {
    switch(flag)
    {
    case 0:
    return s.top[0];
    break;
    case 1:
    return maxsize-s.top[1]-1;
    break;
    default :
    return 0;
    }

    }
    void clear(seqstack *s)
    {
    s->top[0]==0;
    s->top[1]==maxsize-1;
    }

    int main()
    {
    seqstack s;
    int i;
    int a[]={1,2,3,4,5};
    int b[]={11,12,13,14};
    int e1,e2;
    init(&s);
    for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
    {
    if(push(&s,a[i],0)==0)
    {
    cout<<"不能入栈";
    return 0;
    }
    }

    for(i=0;i<sizeof(b)/sizeof(b[0]);i++)
    {
    if(push(&s,b[i],1)==0)
    {
    cout<<"不能入栈";
    return 0;
    }
    }
    cout<<"int a[]={1,2,3,4,5}"<<endl;
    cout<<"int b[]={11,12,13,14};"<<endl;

    cout<<"栈1的栈顶元素为:";
    if(get(s,&e1,0)==0)
    {
    cout<<"栈为空";
    return 0;
    }
    else
    {
    cout<<e1;
    cout<<endl;
    }
    cout<<"栈2的栈顶元素为:";
    if(get(s,&e2,1)==0)
    {
    cout<<"栈为空";
    return 0;
    }
    else
    {
    cout<<e2;
    cout<<endl;
    }



    cout<<"栈1中元素个数为:"<<length(s,0);
    cout<<endl;
    cout<<"栈2中元素个数为:"<<length(s,1);
    cout<<endl;

    cout<<"栈1出栈元素的序列:";
    while(!empty(s,0))
    {
    pop(&s,&e1,0);
    cout<<e1;
    cout<<" ";

    }
    cout<<endl;
    cout<<"栈2出栈元素的序列:";
    while(!empty(s,1))
    {
    pop(&s,&e2,1);
    cout<<e2;
    cout<<" ";
    }
    cout<<endl;


    return 0;
    }

  • 相关阅读:
    logback学习二
    logback学习
    弱类型、强类型、动态类型、静态类型语言的区别
    BlockingQueue
    ExecutorService
    Future学习
    SetTimeout()多次运行函数后越来越快的问题
    LISTAGG函数
    Oracle字段
    使用powerdesigner进行数据库设计
  • 原文地址:https://www.cnblogs.com/mykonons/p/6599704.html
Copyright © 2020-2023  润新知