今天晚上本来要学习递归转非递归,自己写个栈,用一下,可是写了出来,就是报错。看了一个多小时,愣是没发现哪里错了。哎!!
代码贴出来,有人看到给提示一下,先谢了!!
/**置空栈**
**功能:将栈中的空间全部释放
**参数:置空的栈地址
**/
void clearStack(pLStack p)
{
if ( isEmptyStack(p)) p = NULL; //如果栈为空,不需要释放
pLStack topNode;
while ( !isEmptyStack(p))
{
topNode = p;
p = p->next;
free(topNode);
}
}
/**判断栈是否为空**
**功能:判断栈是否为空
**参数:需要判断的栈的地址
**返回:如果栈为空,则返回真,否则返回假。
**/
bool isEmptyStack(pLStack p)
{
if ( p == NULL)
true;
return false;
}
/**将数据压入栈中
**功能:将一个新数据压入栈顶
**参数:新数据和目的栈地址
**返回:如果要存入成功,则返回TRUE,否则返回false
**/
bool PushStack(pLStack p,StackData data)
{
pLStack newnode;
newnode = (pLStack)malloc(sizeof(LStack)); //申请一个新的解读空间
if (newnode == NULL) return false; //如果申请失败,则发回FALSE
newnode->data = data;
newnode->next = p;
p = newnode; //新的节点地址将成为栈顶
printf("=>%d/t",p->data);
return true;
}
/**将数据弹出栈
**功能:将栈顶数据返回
**参数:栈地址
**返回:栈顶数据
**/
StackData PopStack(pLStack p)
{
StackData topData;
pLStack topNode;
if ( isEmptyStack(p) ) return 0; // 判断栈是否为空 返回空值
topData = p->data;
topNode = p;
p = p->next;
printf("<=%d/t",topNode->data);
free(topNode);
return topData;
}