栈:递归的本质是函数压栈,可以利用循环加栈实现递归?
这句话的意思是:循环压栈,和递归的效果一样,且栈结构在堆区申请,就不会栈溢出
//下面为线式存储的栈的实现
#include"mystack.h"
#include<stdlib.h>
void initStack(Stack* s,int size)
{
s->_top = 0;//top始终指向待压入位置
s->_len = size;
s->_space = (char*)malloc(sizeof(char)*s->_len);
}
int isStackFull(Stack* s)
{
return s->_top == s->_len;
}
int isStackEmpty(Stack* s)
{
return s->_top == 0;
}
void push(Stack* s,char ch)
{
s->_space[s->_top++]=ch;
}
char pop(Stack* s)
{
return s->_space[--(s->_top)];
}
void clearStack(Stack* s)
{
free(s->_space);
}
void resetStack(Stack* s)
{
s->_top=0;
}