流行功能说明

时间:2014-04-28 01:27:42

标签: c push pop

我有一些我想要了解的类的推送和弹出代码,并对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}},如果以后在方法中没有使用它?

3 个答案:

答案 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)

当您弹出堆栈的顶部项目时,堆栈顶部包含的值将通过输出参数返回。

它对调用函数很有用。