Get the App
SLTechnology News&Howtos  ›  Servers  › 

[C language data structure] chain stack

Shulou Source: shulou.com Published: 2022-06-03 02:59:53 09月19日 Update

LinkStack.h

# ifndef LINKSTACK_H#define LINKSTACK_Htypedef 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);}

Tags: Data data structure structure language Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Redmi vpn Docker Shulou Tech Info Apple