【C语言数据结构】链栈
admin
2023-02-05 07:40:05
0

LinkStack.h

#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);
}


相关内容

热门资讯

胡塞武装袭击红海油轮,特朗普威... 据路透社报道,当地时间7月23日,也门胡塞武装表示已在红海袭击两艘沙特油轮,并称这两艘油轮违反该组织...
刚签就要黄了?特朗普:核能协议... 据彭博社报道,当地时间7月23日,美国总统特朗普表示,美国与沙特阿拉伯的民用核能合作协议能否落地,将...
原创 宇... 可观测宇宙的范围远远超出了以光年为单位的其年龄,因为在遥远光线传播的过程中,空间本身已经膨胀了。然而...
我国研发出具有“电子共振”结构... 【我国研发出具有“电子共振”结构的钙钛矿光伏电池】财联社7月22日电,苏州大学李耀文、陈先凯与东南大...
我国牵头制定,智能制造用例国际... 国际电工委员会智能制造系统委员会(IEC/SyC SM)近日发布《智能制造用例模板》国际标准。该标准...
一文看懂三星Z系列三款折叠新机... 【CNMO科技消息】近日,三星正式发布Z Fold8 Ultra、Z Fold8以及Z Flip8三...
4位菲尔兹奖得主有3位会说中文... 当地时间7月23日,2026年国际数学家大会在美国费城开幕,国际数学联盟在开幕式上正式公布第二十一届...
菲尔兹奖得主邓煜:做真正喜欢的... 文 | 《中国科学报》 记者 赵广立初次和邓煜对话是轻松的,没有被数学天才“碾压”的感受。他会耐心听...
如何抢抓6G机遇?低空怎样飞得... 7月23日,记者从双流区获悉,2026天府科学家创新发展大会暨成都科产融合对接活动双流(电子信息)专...
腾讯云官宣大规模部署国产化算力... 在2026世界人工智能大会的分论坛现场,腾讯云高管首次公开明确宣布,将大规模部署国产化算力,目标直指...