链式栈
基于链表实现链式栈,对栈做以下操作:
- 出栈
- 入栈
- 取栈顶元素
- 初始化
- 销毁
基于栈后进先出的结构,入栈可以用头插来实现,出栈用头删来实现即可。
初始化
void LinkStackInit(LinkStack** phead)
{
if(phead==NULL)
{
return;//非法输入
}
*phead=NULL;
}
销毁
void LinkStackDestroy(LinkStack** phead)
{
if(phead==NULL)
{
return;
}
LinkStack* cur=*phead;
for(;cur!=NULL;cur=cur->next)
{
free(cur);
}
*phead=NULL;
}
入栈
void LinkStackPush(LinkStack** phead,LinkStackType value)
{
if(phead==NULL)
{
return;//非法输入
}
LinkStack* new_node=CreatNode(value);
new_node->next=*phead;
*phead=new_node;
}
出栈
void LinkStackPop(LinkStack** phead)
{
if(phead==NULL)
{
return;
}
if(*phead==NULL)
{
return;//空栈
}
LinkStack* to_delete=*phead;
*phead=(*phead)->next;
free(to_delete);
}
取栈顶元素
int LinkStackTop(LinkStack* head,LinkStackType* value)
{
if(head==NULL)
{
return 0;
}
*value=head->data;
return 1;
}