当前位置:   article > 正文

采用顺序存储实现栈的初始化、入栈、出栈操作。/验证实验/_实现顺序存储结构上的栈的初始化、入栈和出栈操作,并进行测试。

实现顺序存储结构上的栈的初始化、入栈和出栈操作,并进行测试。

#include<stdio.h>  
#include<stdlib.h>  
#define maxsize 100  
typedef struct SqStack
{  
    int data[maxsize];  
    int top;  
}SqStack;  
  


void SqStackEmpty(SqStack *st)//判断栈是否为空
{  
st->top==-1?printf("栈仍为空,操作可能有风险建议重新调试程序\n"): printf("栈不为空,操作可正常进行\n");
}  
 
void push(SqStack *st,int i)//进栈
{  
    if(st->top+i>=maxsize-1)
{   printf("overflow! 不能进栈!\n"); }  
    else
{   printf("请输入你要进栈的%d个数据:\n",i);
for(int a=0;a<i;a++)
scanf("%d",&st->data[++st->top]); } 
}  
  
void pop(SqStack *st,int j)//出栈
{   
    if(st->top==-1)
{ printf("空栈怎能出栈!\n"); }  
    else if(st->top-j<-1)
{ printf("要求出栈的元素过多,已超出栈的存储量");}
else
{   
printf("出栈的数据是:\n");
for(int a=0;a<j;a++)
printf("%d  ",st->data[st->top--]); 
}
printf("\n");
}  
  
void printStack(SqStack *st)//打印栈内当前所有的栈元素
{  
    while(st->top !=-1)
{  
        printf("栈元素:%d\n",st->data[st->top--]);  
    }  
}  


void main(){  
    int i,j,a;  
    SqStack st={{1,2,3,4},3};  //存入四个数据,以及top的位置即4-1=3,top来指示当前栈顶元素的位置
    SqStackEmpty(&st);
while(1)
{printf("输入1进栈、2出栈、3打印栈\n");
scanf("%d",&a);
if(a==1)
{printf("输入你要进栈数据的个数:\n");
    scanf("%d",&i);
push(&st,i);
continue;}
if(a==2)
{printf("输入你要出栈数据的个数:\n");
scanf("%d",&j);
    pop(&st,j);
continue;}
    if(a==3)
    {printf("栈内数据:\n");
printStack(&st);
continue;}
else 
{printf("输入有误,请重新输入!\n");
continue;}}
}  

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/893379
推荐阅读
相关标签
  

闽ICP备14008679号