gpt4 book ai didi

c - 推送操作中对数组的堆栈操作错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:48 24 4
gpt4 key购买 nike

我正在尝试实现堆栈操作,而在进行压入操作时,输入的值始终为 0。如果我输入任何数字,加载的数组中的结果始终为 0。

//Stack Operation
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int stack[10];
int top=0;
void push()
{
int i;
printf("Enter the element you want to add");
scanf("%d",& stack[top]);
top++;
printf("%d",stack[top]);
printf("The element is added\n");
for(i=0;i<top;i++) {
printf("%d",stack[top]);
}
}
int pop()
{
top--;
return(stack[top]);
}
void display()
{
int i;
for(i=0;i<=top;i++);
{
printf("%d \t",stack[i]);
}
}
void main()
{
int ch;
clrscr();
label:
printf("1---->Push\n");
printf("2---->Pop\n");
printf("3----->Display\n");
printf("4-----> Exit\n");
printf("Enter your choice");
scanf("%d",&ch);
if(ch==1) {
clrscr();
push();
goto label;
}
if(ch==2) {

int f;
clrscr();
f=pop();
printf("Poped Element %d",f);
goto label;
}
if(ch==3) {
clrscr();
display();
goto label;
}
if(ch==4) {
exit(0);
}
getch();
}

最佳答案

据我了解,您的索引是错误的。你可能想改变

for(i=0;i<top;i++)
{
printf("%d",stack[i]); // change top to i
}

也就是说,

  • push() , 你在做什么

    scanf("%d",& stack[top]);
    top++;
    printf("%d",stack[top]);

    递增 top在打印扫描的 值之前。你不想增加 top打印前。

  • 在你的 push函数,索引top未绑定(bind),而实际数组已绑定(bind)(10 个元素)。你至少应该检查一下 top值(<10 或类似值)以确保索引在范围内。

关于c - 推送操作中对数组的堆栈操作错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38665847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com