我正在尝试使用 C 中的数组在堆栈上执行所有操作(推送、弹出、窥视、更新、显示)。当我在调用show()
我需要的所有函数后最后调用 at 时,它工作正常。但是,每当我show()
在任何操作之前打电话时,它都没有给我适当的结果。我正在使用以下代码:
int main()
{
push(1);
push(2);
push(3);
push(4);
push(6);
pop();
push(5);
show();//line 8
//push(7);//line 9
//pop();
//peep();
//update();
//show();//line 13
return;
}
void push(int num){//insert an item
if(top==MAXSIZE-1)
{
printf("Overflow condition");
return;
}
top++;
stack[top]=num;
//return;
}
void pop()//delete a item from top
{
int num;
if(top==-1)
{
printf("Underflow condition");
return;
}
num=stack[top];
top--;
//return;
}
void show()//display elements
{
if(top==-1){
printf("Underflow");
return;
}
while(top!=-1){
printf("%d\n",stack[top--]);
}
//return;
}
void peep()//extract information
{
int loc,num;
printf("enter location:\n");
scanf("%d",&loc);
if(top-loc+1 < 0)
{
printf("No item at the given location\n");
return;
}
else{
num=stack[top-loc+1];
printf("\nItem at location %d is %d",loc,num);
}
}
void update(){//update information
int loc,item;
printf("enter new item:");
scanf("%d",&item);
printf("enter location:");
scanf("%d",&loc);
if(top-loc+1 < 0)
{
printf("No item at the given location\n");
return;
}
else{
stack[top-loc+1]=item;
printf("\nItem inserted");
}
}
在这里调用后show()
,top 将在第 8 行指向 -1(empty),因此之后将产生以下后果:
push()
将插入位置 1 而不是顶部。pop()
将显示下溢情况。peep()
如果条件,更新将进入。
那么如何在调用后将顶部设置为堆栈中的顶部元素show()
?谢谢。