tiaya01 2021-11-17 14:08 采纳率: 85.7%
浏览 26
已结题

关于顺序栈的出栈问题,为什么输出的结果不对啊?

img


这是我的代码:


#include<iostream>
using namespace std;

#define MAXSIZE 100
typedef struct{
    int id;
    char name[10];
}SElemtype;

typedef struct{
    SElemtype *base;
    SElemtype *top;
    int stacksize;
}Sqstack;

void InitStack(Sqstack &S);
void Push(Sqstack &S,SElemtype e);
void Pop(Sqstack &S,SElemtype &e);
SElemtype Gettop(Sqstack S);
int StackEmpty(Sqstack &S);


int main(){
    Sqstack s;
    SElemtype newdate;
    cout << "构造一个空栈" << endl;
    InitStack(s);
    int i,n;
    cout << "请输入栈的长度:" << endl;
    cin >> n;
    for(i=1;i<=n;i++){
        cout << "输入栈的第" << i << "个元素" << endl;
        ++s.top;
        cin >> newdate.id >> newdate.name;
        Push(s,newdate);
    }    
    cout << "请输出栈顶元素:"<< endl;    
    Gettop(s);
    cout << newdate.id << " " << newdate.name << endl;
    cout << "请输出元素:" << endl;
    while (!StackEmpty(s))
    {
        Pop(s, newdate);
        cout << newdate.id << " " << newdate.name << endl;    
    }
    return 0;
}
//顺序栈的初始化 
void InitStack(Sqstack &S){
    S.base=new SElemtype[MAXSIZE];//为顺序栈的动态分配数组空间 
    if(!S.base)//存储分配失败 
    exit(1);
    S.top=S.base;//top初始为base,空栈 
    S.stacksize=MAXSIZE;//stacksize置为栈的最大容量MAXSIZE 
}
//顺序栈的入栈
void Push(Sqstack &S,SElemtype e){
    if(S.top-S.base==S.stacksize)//栈满 
    exit(1);
    *S.top++=e;
} 
//顺序栈的出栈 
void Pop(Sqstack &S,SElemtype &e){    
    
    if(S.top==S.base)//栈空 
    exit(1);
    e=*--S.top;//栈顶指针减1,将栈顶元素赋值给e 
}
//顺序栈获取栈顶元素
SElemtype Gettop(Sqstack S){
    if(S.top != S.base)
    return *(S.top-1);
} 
int StackEmpty(Sqstack &S)  //判断栈是否为空
{
    if (S.top == S.base)
        return 1;
    else
        return 0;
    
}


关于顺序栈的出栈问题,为什么输出的结果不对啊?

  • 写回答

1条回答 默认 最新

  • 真相重于对错 2021-11-17 14:43
    关注
    
    for(i=1;i<=n;i++){
            cout << "输入栈的第" << i << "个元素" << endl;
            ++s.top;//这里你为何要++??
            cin >> newdate.id >> newdate.name;
            Push(s,newdate);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测