我有一些我想要了解的类的推送和弹出代码,并对pop函数有疑问。
这是节点结构:
struct NODE
{
int dataitem;
struct NODE *link;
};
这是pop功能:
struct NODE* PopD(struct NODE *SP, int *Data)
{
struct NODE *temp;
temp = SP;
*Data = temp->dataitem;
temp = temp->link;
free(SP);
return temp;
}
所以我的问题是这一行做了什么:*Data = temp->dataitem;
为什么dataitem
值会在Data
中变为{{1}},如果以后在方法中没有使用它?
答案 0 :(得分:1)
调用此函数的人将传入一个指向整数的指针 - 期望该整数用堆栈中最顶层的整数填充。
即
int x;
stack = PopD(stack, &x);
printf("Top of stack was %d\n", x);
答案 1 :(得分:1)
通过Data
参数返回数据。返回值用于更新堆栈指针。大概应该使用这样的代码:
struct NODE *stack = NULL;
// push some items
// ...
// pop one
int data;
stack = PopD(stack, &data);
printf("%d\n", data);
答案 2 :(得分:0)
当您弹出堆栈的顶部项目时,堆栈顶部包含的值将通过输出参数返回。
它对调用函数很有用。