我是靠谱客的博主 虚拟母鸡,最近开发中收集的这篇文章主要介绍两个顺序栈共享一个数组的存储空间,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//两个顺序栈共享一个数据空间
#include<stdio.h>
#include "stdlib.h"
#define MAXSIZE 100 //是顺序栈所能存储的最多元素个数
typedef int datatype;
typedef struct//顺序栈的定义 
{
    datatype stack[MAXSIZE]; //stack 数组存储栈中所有的数据元素 
    int top;
 } seqstack;//顺序栈的类型定义 
 seqstack *S,*B,s,b;//顺序栈变量定义 
 
void INITSTACK(seqstack *S,seqstack *B)
{
    S->top=-1;
    B->top=MAXSIZE;
    printf("S,B两个栈共享一个数组的存储空间!");
}
 
 int EMPTY(seqstack *S,seqstack *B)
 {
     if(S->top<0&&B->top>=MAXSIZE)
     {printf("栈空!");
     return 1;
     }
     else return 0;
 }
 int FULL(seqstack *S,seqstack *B)
 {
     if(S->top==B->top-1)
     {printf("栈满");
     return 1;
     }
    else return 0; 
  } 
  seqstack *SPUSH(seqstack *S,datatype x)
  {
      
      if(FULL(S,B))
      {
         return 0; 
      }
      else 
      {printf("请输入数据");
          scanf("%d",&x);
          S->top++;
          S->stack[S->top]=x;
      }
      return S;
   } 
   int SPOP(seqstack *S,seqstack *B)
   {datatype x;
       if(EMPTY(S,B))
       {
        return 0;
       }
       else 
       {
           x=S->stack[S->top];
           S->top--;
           printf("出栈成功:%dn",x); 
           return (x);
       }
   }
   
   seqstack *BPUSH(seqstack *B,datatype x)
   {
       if(FULL(S,B))
       {
        return 0;    
       }
       else 
       {printf("请输入数据");
          scanf("%d",&x);
           B->top--;
           B->stack[B->top]=x;
       }
       return B;
   }
   
   int BPOP(seqstack *S,seqstack *B)
   {datatype x;
       if(EMPTY(S,B))
       {
           return 0;
       }
       else
       {
           x=B->stack[B->top];
           B->top++;
           printf("出栈成功:%dn",x);
           return x;
       }
   }
   int select()
    
    {int b; 
    printf("两个顺序栈共用一个数组的存储空间:n请选择功能n");
       printf("1.初始化t");
       printf("2.栈1进栈t");
       printf("3.栈1出栈t");
       printf("4.栈2进栈t");
       printf("5.栈2出栈tn");
    printf("0.退出tn");
    scanf("%d",&b);
    return b;    
    }

   
   int main()
   {
    int select();
    int a;
      S=&s;
    B=&b; 
       void INITSTACK(seqstack *S,seqstack *B);
    int EMPTY(seqstack *S,seqstack *B);
    int FULL(seqstack *S,seqstack *B);
    seqstack *SPUSH(seqstack *S,datatype x);
    int SPOP(seqstack *S,seqstack *B);
    seqstack *BPUSH(seqstack *B,datatype x);
    int BPOP(seqstack *S,seqstack *B);
    while(1)
    {    
        a=select();
        switch(a)
       {
     case 0: exit(0);
    case 1:INITSTACK(&s,&b);
    break;
           case 2:
       SPUSH(&s,a);
       break;
       case 3:
       SPOP(&s,&b);
       break;
       case 4:
       BPUSH(&b,a);
       break;
       case 5:
        BPOP(&s,&b);
       }

   }
         return 0;
        
    }
    
 

最后

以上就是虚拟母鸡为你收集整理的两个顺序栈共享一个数组的存储空间的全部内容,希望文章能够帮你解决两个顺序栈共享一个数组的存储空间所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部