我正在尝试使用指针实现堆栈,结构定义在下面的代码中。我调用了push()
要插入的三个元素(例如:2、4、6)的函数。然后,我调用该函数display()
。它只显示0
。我发现原因是因为free()
我的函数中的push()
函数。但是,我不知道那里到底发生了什么。我不应该free()
用来释放代码中使用的分配内存temp
吗?如果是这样,为什么?
#include<stdio.h>
//#include<unistd.h>
#include<stdlib.h> // malloc ,calloc, free avail here
void push();
void pop();
void display();
struct stack {
int data;
struct stack *next;
};
struct stack *start = NULL;
void push()
{
int ele;
struct stack *temp, *p;
printf("entere the element\n");
scanf("%d", &ele);
temp = (struct stack *) malloc(sizeof(struct stack));
temp->data = ele;
if (start == NULL) {
start = temp;
start->next = NULL;
} else {
p = start;
while (p->next != NULL) {
p = p->next;
}
p->next = temp;
temp->next = NULL;
}
free(temp);
}