HTRE 2022-03-27 14:08 采纳率: 93.5%
浏览 24
已结题

栈一共有10个,我输入9个,然后栈满,我在把第一个删了,然后我再输入一个,但我输入的是10号位置,不是1号位置

#include<stdio.h>
#include<stdlib.h>
#define maxsize 10
typedef struct {
int base;
int front;
int rear;
} SqQuence;
int initQuence(SqQuence
s) {
s->base=(int*)malloc(sizeof(int)*maxsize);
if(s->base) printf("初始化成功!");
else printf("初始化失败!");
s->front=s->rear=0;
}
int pushQuence(SqQuence *s) {
int num;
printf("\n请输入要入队的值:");
while((s->rear-s->front+maxsize)%maxsize<=maxsize-1) {

    if((s->rear+1)%maxsize==s->front) {
        printf("栈满");
        break;
    }
   
    else{
        scanf("%d",&num);
        s->base[s->rear]=num;
        s->rear=(s->rear+1)%maxsize;
        

    }
}
printQuence(*s);

}
int printQuence(SqQuence s) {
for(int i=0; i<=(s.rear-s.front+maxsize)%maxsize-1; i++)
printf("%d ",s.base[i]);
}
int pullQuence(SqQuence *s) {
if(s->rear==s->front)
printf("栈空");
else {
int e;
e=s->base[s->front];
s->front=(s->front+1)%maxsize;
pushQuence(s);
}
}
int main()
{
SqQuence s;
initQuence(&s);
pushQuence(&s);
pullQuence(&s);
}

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-03-28 14:29
    关注

    “多一少一”问题占程序员常犯错误的10%以上!
    避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,掰手指头心算验证一下程序到底应该写为
    x、x-1、x+1中的哪个?
    <、<=、==、>、>=中的哪个?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月11日
  • 已采纳回答 4月3日
  • 创建了问题 3月27日

悬赏问题

  • ¥15 hexo+github部署博客
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?