新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果你的链表是用数组的话,那么只要简单得把指向栈顶的指针(一个整数) = -1(因为数组的下表是从0开始) 就OK,表示没有元素,
娄底网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
如果你的链表是用动态结构的话,那么你要把这个栈的所有元素释放了,最后s.stack = NULL;
你这个栈是一个顺序栈,base是其所占内存的首地址,当然free(s-base)会把整个栈所占内存都释放,栈不仅仅是空了(象杯子中没有了水),而且变没了(连杯子都只剩下个底座了)。可以这样做,但是一定注意:对应的结构体中stacksize要置为0。
#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
}