数据结构中,删除栈顶元素时,是将栈顶指针减一 取栈顶元素给别的变量(如a),

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:50:10
这样只是把栈顶元素赋给了其它变量,并没有释放它所占用的空间,怎么能说删除掉了呢?谁能给我解释下,到底怎样才能删除栈顶元素

如果采用数组来实现的栈,数组在其生存周期内将一直存在,故无法删除;如果采用动态分配空间来实现栈,则可以删除,大概就跟119.145.97.*说的差不多。但是最好不要一弹出栈顶元素就删除,因为总是会出现进栈和出栈操作,老是申请和释放空间会降低效率,所以一般来说是最后不需要这个栈了,再一次性释放所有的空间。

ElemType Pop(Lsnode *h)
{ int x;
p=(Lsnode *)malloc(sizeof(Lsnode));
if(h->next!=NULL)
{
p=h->next;
h->next=p->next;
x=p->data;
free(p);
return x;
}
else {printf("Stack null!\n");return '#';}
}