
正文
c语言清空栈函数,c++清空栈
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C中怎样清空一个栈(要具体算法)
如果你的链表是用数组的话,那么只要简单得把指向栈顶的指针(一个整数) = -1(因为数组的下表是从0开始) 就OK,表示没有元素,
如果你的链表是用动态结构的话,那么你要把这个栈的所有元素释放了,最后s.stack = NULL;
相关问答
Q1: 关于栈的清空 C语言 求大神
你这个栈是一个顺序栈,base是其所占内存的首地址,当然free(s-base)会把整个栈所占内存都释放,栈不仅仅是空了(象杯子中没有了水),而且变没了(连杯子都只剩下个底座了)。可以这样做,但是一定注意:对应的结构体中stacksize要置为0。
Q2: C语言!!!栈
#define STACK_SIZE 100 //定义栈容量为100
int contents[STACK_SIZE]; //定义数组contents用作栈
int top = 0; //定义并初始化栈顶指针为0
//函数作用:清空栈
void make_empty(void)
{
top = 0; //直接将栈顶指针置0
}
//函数作用:判断栈是否为空
bool is_empty(void)
{
return top == 0; //返回top是否等于0
}
//函数作用:判断栈是否已满
bool is_full(void)
{
return top == STACK_SIZE; //返回top是否等于STACK_SIZE
}
//函数作用:向栈中压入一个元素i
void push(int i)
{
if(is_full()) //如果栈已满
stack_overflow(); //执行栈上溢操作
else //否则可以入栈
contents[top++] = i; //向栈中压入i,然后将栈顶指针+1
}
//函数作用:弹出栈顶元素并返回
int pop(void)
{
if(is_empty()) //如果栈为空
stack_underflow(); //执行栈下溢操作
else //否则可以出栈
return contents[--top]; //返回栈顶元素,然后将栈顶指针-1
}







