【C语言数据结构】链栈
LinkStack.h

成都创新互联云计算的互联网服务提供商,拥有超过13年的服务器租用、资阳托管服务器、云服务器、虚拟空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、虚拟空间、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
#ifndef LINKSTACK_H #define LINKSTACK_H typedef void LinkStack; LinkStack* LinkStack_Create(); void LinkStack_Destroy(LinkStack* stack); void LinkStack_Clear(LinkStack* stack); int LinkStack_Push(LinkStack* stack, void* item); void* LinkStack_Pop(LinkStack* stack); void* LinkStack_Top(LinkStack* stack); int LinkStack_Size(LinkStack* stack); #endif // LINKSTACK_H
LinkStack.c
#include "LinkStack.h"
#include "LinkList.h"
#include "malloc.h"
typedef struct _tag_LinkStackNode
{
LinkListNode node;
void *item;
}TLinkStackNode;
LinkStack* LinkStack_Create()
{
return LinkList_Create();
}
void LinkStack_Destroy(LinkStack* stack)
{
LinkStack_Clear(stack);
LinkList_Destroy(stack);
}
void LinkStack_Clear(LinkStack* stack)
{
while(LinkStack_Size(stack) > 0)
{
LinkStack_Pop(stack);
}
}
int LinkStack_Push(LinkStack* stack, void* item)
{
TLinkStackNode *node = (TLinkStackNode *)malloc(sizeof(TLinkStackNode));
int ret = ((item != 0) && (node != 0));
if(ret)
{
node->item = item;
ret = LinkList_Insert(stack,(LinkListNode *)node,0);
}
if(!ret)
{
free(node);
}
return ret;
}
void* LinkStack_Pop(LinkStack* stack)
{
TLinkStackNode *node = (TLinkStackNode *)LinkList_Remove(stack,0);
void *ret = 0;
if(node != 0)
{
ret = node->item;
free(node);
}
return ret;
}
void* LinkStack_Top(LinkStack* stack)
{
TLinkStackNode *node = (TLinkStackNode *)LinkList_Remove(stack,0);
void *ret = 0;
if(node != 0)
{
ret = node->item;
}
return ret;
}
int LinkStack_Size(LinkStack* stack)
{
return LinkList_Length(stack);
}
网站栏目:【C语言数据结构】链栈
浏览地址:http://www.jxjierui.cn/article/gghspp.html


咨询
建站咨询
