栈(链式)

来源:互联网 发布:淘宝怎么进我的店铺 编辑:程序博客网 时间:2024/06/06 00:40

头文件

#ifndef LINKSTACK_H#define LINKSTACK_Htypedef void LinkStack;LinkStack* SeqStack_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

源文件

#include <stdio.h>#include <malloc.h>#include "LinkList.h"#include "LinkStack.h"typedef srtuct tag_LinkStackNode{    LinkListNode header;    void* item;}TLinkStackNode;LinkStack* SeqStack_Create(){    return (TLinkStack*)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 = (node != NULL)&&(item != NULL);    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_Delete(stack,0));    void* ret = NULL;    if(node != NULL)    {        ret = node->item;        free(node);    }    return ret;}void* LinkStack_Top(LinkStack* stack){    TLinkStackNode* node = (TLinkStackNode*)(LinkList_Get(stack,0));    void* ret = NULL;    if(node != NULL)    {        ret = node->item;    }    return ret;}int LinkStack_Size(LinkStack* stack){    return LinkList_Length(stack);}
原创粉丝点击