栈(链式)
来源:互联网 发布:淘宝怎么进我的店铺 编辑:程序博客网 时间: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);}
阅读全文
0 0
- 栈(链式)
- 栈(链式)
- LinkList_Stack(链式栈)
- 栈(三):链式栈
- (二)调试链式栈
- 链式存储结构(栈)
- 数据结构5(链式栈)
- 数据结构栈(链式实现)
- 链式栈(c++实现)
- Java栈(链式实现)
- 数据结构(顺序单链表、链式单链表、顺序栈、链式栈、顺序队列、链式队列)
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- PAT甲级1013
- Idea 2016生成serialVersionUID的方法
- 常见对象-Arrays工具类
- 当eclipse跑的不是当前程序
- 神经网络:1)从zero开始的梯度下降法
- 栈(链式)
- JAVA源码解读之StringBuffer
- 计算机组成与系统结构学习笔记(1)一 计算机系统概论 [1.3
- Friday the Thirteenth
- hibernate的二级缓存 I
- STM32F4应用笔记(五)UCGUI+uC/OS-II+支持触摸屏
- 大鱼吃小鱼
- 时域卷积与频域乘积
- 快乐数