【发布时间】:2017-06-09 18:44:21
【问题描述】:
具体来说,我想访问多个堆栈,目的是从一个堆栈中弹出一个元素并将其推入另一个堆栈。因此,我决定使用 structures (struct) 来访问它们。考虑以下代码,
#define MAX 100
#include <stdio.h>
#include <string.h>
struct bag
{
int top;
int arr[MAX];
}harry,monk;
int pop(struct bag name);
void push(int data,struct bag name);
int main()
{
int i,temp;
harry.top=-1;
monk.top=-1;
push(3,harry);
push(1,harry);
push(1,harry);
push(4,harry);
temp=pop(harry);
push(temp,monk);
temp=pop(harry);
push(temp,monk);
for (i=0;i<4;i++)
printf("%d\t%d\n",harry.arr[i],monk.arr[i]);
return 0;
}
int pop(struct bag name)
{
int temp=name.arr[name.top];
name.top=(name.top)-1;
return temp;
}
void push(int data,struct bag name)
{
name.top=(name.top)+1;
name.arr[name.top]=data;
}
分析代码后发现每次调用函数,
void push(int data,struct bag name)
name.top 的 值 已从 -1 更改为 0,但在调用时又恢复为 -1再次。因此,任何分配给 harry.arr[harry.top] 的值最终都会分配给数组 harry.arr[-1]。 那么,有人有什么想法吗?
【问题讨论】:
-
请缩进你的代码
标签: c data-structures struct stack