m0_69047424 2022-10-16 14:23 采纳率: 66.7%
浏览 22
已结题

怎么修改使它出栈为decfbga,

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define STACKSIZE 100

typedef int ElemType;
typedef struct
{
ElemType stack[STACKSIZE];
int top;
}SeqStack;
void InitStack(SeqStack *S)//将栈S初始化为空栈
{
S->top = 0;
}
int StackEmpty(SeqStack S)//判断栈是否为空,栈为空返回1,否则返回0
{
if(0 == S.top)
{
return 1;
}
else
{
return 0;
}
}
int GetTop(SeqStack S,ElemType *c)//取栈顶元素,将栈顶元素值返回给e,并返回1表示成功,返回0表示失败
{
if(S.top <= 0)
{
printf("栈已经空!\n");
return 0;
}
else
{
*c = S.stack[S.top-1];//取栈顶元素
return 1;
}
}
int PushStack(SeqStack *S,ElemType c)//进栈操作
//将元素e进栈,元素进栈成功返回1,否则返回0
{
if(S->top >= STACKSIZE-1)
{
printf("栈已满,不能入栈!");
return 0;
}
else
{
S->stack[S->top] = c;
S->top++;
return 1;
}
}
int PopStack(SeqStack *S,ElemType *c)//出栈操作
{
if(S->top <= 0)
{
printf("栈已经没有元素,不能出栈!\n");
return 0;
}
else
{
S->top--;
*c = S->stack[S->top];
return 1;
}
}
int StackLength(SeqStack S)//返回栈长度
{
return S.top;
}
void ClearStack(SeqStack *S)//清空栈
{
S->top = 0;
}
//#include "顺序栈.h"
/将元素a,b,c,d,e依次入栈,然后将d和e出栈,再将f和g进栈,最后将元素全部进栈,并将元素按照出栈次序输出/
int main(void)
{
SeqStack S;
int i;
ElemType a[] = {'a','b','c','d','e','f','g'};
ElemType e;
InitStack(&S);
for(i = 0;i < sizeof(a)/sizeof(a[0]);i++)
{
if(PushStack(&S,a[i]) == 0)
{
printf("栈已满,不能进栈!");
return 0;
}
}
printf("出栈元素是:");
if(PopStack(&S,&e) == 1)
{
printf("%4c",e);
}
if(PopStack(&S,&e) == 1)
{
printf("%4c",e);
}
printf("\n");
printf("当前栈顶元素是:");
if(GetTop(S,&e) == 0)
{
printf("栈已空!");
return 0;
}
else
{
printf("%4c\n",e);
}
if(PushStack(&S,'e') == 0)
{
printf("栈已满,不能进栈!");
return 0;
}
if(PushStack(&S,'d') == 0)
{
printf("栈已满,不能进栈!");
return 0;
}
printf("当前栈的元素个数是:%d\n",StackLength(S));
printf("元素的出栈顺序是:");
while(!StackEmpty(S))
{
PopStack(&S,&e);
printf("%4c",e);
}
printf("\n");
return 0;

}

  • 写回答

1条回答 默认 最新

  • lzl2040 人工智能领域新星创作者 2022-10-16 15:23
    关注
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    
    #define STACKSIZE 100
    
    typedef int ElemType;
    typedef struct
    {
        ElemType stack[STACKSIZE];
        int top;
    }SeqStack;
    void InitStack(SeqStack *S)//将栈S初始化为空栈
    {
        S->top = 0;
    }
    int StackEmpty(SeqStack S)//判断栈是否为空,栈为空返回1,否则返回0
    {
        if(0 == S.top)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    int GetTop(SeqStack S,ElemType *c)//取栈顶元素,将栈顶元素值返回给e,并返回1表示成功,返回0表示失败
    {
        if(S.top <= 0)
        {
            printf("栈已经空!\n");
            return 0;
        }
        else
        {
        *c = S.stack[S.top-1];//取栈顶元素
        return 1;
        }
    }
    int PushStack(SeqStack *S,ElemType c)//进栈操作
    //将元素e进栈,元素进栈成功返回1,否则返回0
    {
        if(S->top >= STACKSIZE-1)
        {
            printf("栈已满,不能入栈!");
            return 0;
        }
        else
        {
            S->stack[S->top] = c;
            S->top++;
            return 1;
        }
    }
    int PopStack(SeqStack *S,ElemType *c)//出栈操作
    {
        if(S->top <= 0)
        {
            printf("栈已经没有元素,不能出栈!\n");
            return 0;
        }
        else
        {
            S->top--;
            *c = S->stack[S->top];
            return 1;
        }
    }
    int StackLength(SeqStack S)//返回栈长度
    {
        return S.top;
    }
    void ClearStack(SeqStack *S)//清空栈
    {
        S->top = 0;
    }
    //#include "顺序栈.h"
    //将元素a,b,c,d,e依次入栈,然后将d和e出栈,再将f和g进栈,最后将元素全部进栈,并将元素按照出栈次序输出/
    int main(void)
    {
        SeqStack S;
        int i;
        ElemType a[] = {'a','g','b','f','c','e','d'};
        ElemType e;
        InitStack(&S);
        for(i = 0;i < sizeof(a)/sizeof(a[0]);i++)
        {
            if(PushStack(&S,a[i]) == 0)
            {
                printf("栈已满,不能进栈!");
                return 0;
            }
        }
        printf("出栈元素是:");
        if(PopStack(&S,&e) == 1)
        {
            printf("%4c",e);
        }
        if(PopStack(&S,&e) == 1)
        {
            printf("%4c",e);
        }
        printf("\n");
        printf("当前栈顶元素是:");
        if(GetTop(S,&e) == 0)
        {
            printf("栈已空!");
            return 0;
        }
        else
        {
            printf("%4c\n",e);
        }
        
        if(PushStack(&S,'e') == 0)
        {
            printf("栈已满,不能进栈!");
            return 0;
        }
        
        if(PushStack(&S,'d') == 0)
        {
            printf("栈已满,不能进栈!");
            return 0;
        }
        printf("当前栈的元素个数是:%d\n",StackLength(S));
        printf("元素的出栈顺序是:");
        while(!StackEmpty(S))
        {
            PopStack(&S,&e);
            printf("%4c",e);
        }
        printf("\n");
        return 0;
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月25日
  • 已采纳回答 10月17日
  • 创建了问题 10月16日

悬赏问题

  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)