07_栈的链式存储
来源:互联网 发布:有没有正规的网络兼职 编辑:程序博客网 时间:2024/06/04 00:48
这个是在前面链式存储结构的基础上实现代码复用
/*linkStack.h*/#pragma once#include "mlinkList.h"using LinkStack = LinkList;struct LinkStackNode { LinkListNode node; void *item;};class linkStack { private: mlinkList chen; public: linkStack(); ~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);};
/*linkStack.cpp*/#include "linkStack.h"linkStack::linkStack() { }linkStack::~linkStack() { }LinkStack* linkStack::LinkStack_Create() { return chen.LinkList_Create();}void linkStack::LinkStack_Destroy(LinkStack* stack) { LinkStack_Clear(stack); chen.LinkList_Destroy(stack);}void linkStack::LinkStack_Clear(LinkStack* stack) { while ( LinkStack_Size(stack)>0 ) { LinkStack_Pop( stack ); }}int linkStack::LinkStack_Push(LinkStack* stack, void* item) { int ret = (stack != nullptr); if ( ret ) { LinkStackNode *node = (LinkStackNode*)malloc(sizeof(LinkStackNode)); if ( node!=nullptr ) { node->item = item; ret = chen.LinkList_Insert(stack, &node->node, 0); if ( !ret ) { free( node ); node = nullptr; } } } return ret;}void* linkStack::LinkStack_Pop(LinkStack* stack) { LinkStackNode *node = (LinkStackNode*)chen.LinkList_Delete(stack,0); void *ret = nullptr; if ( node!=nullptr ) { ret = node->item; free(node); } return ret;}void* linkStack::LinkStack_Top(LinkStack* stack) { LinkStackNode *node = (LinkStackNode*)chen.LinkList_Get( stack ,0 ); void *ret = nullptr; if ( node!=nullptr ) { ret = node->item; } return ret;}int linkStack::LinkStack_Size(LinkStack* stack) { return chen.LinkList_Length(stack);}
/*main.cpp*/#include "linkStack.h"int main(int argc, char **argv) { linkStack chen; LinkStack *stack = chen.LinkStack_Create(); int a[10]; for (int i = 0; i < 10; ++i) { a[i] = i; chen.LinkStack_Push(stack, a + i); } cout << "top : " << *(int*)chen.LinkStack_Top(stack) << endl; while ( chen.LinkStack_Size(stack)>0 ) { cout << *(int*)chen.LinkStack_Pop(stack) << endl; } chen.LinkStack_Destroy(stack); system( "pause" ); return 0;}
阅读全文
0 0
- 07_栈的链式存储
- 17_队列的链式存储
- 堆栈的相关操作_链式存储
- 栈的链式存储
- 栈的链式存储
- 栈的链式存储
- 栈的链式存储
- 栈的链式存储
- 栈的链式存储
- 栈的链式存储
- 栈的链式存储结构
- 栈的链式存储表示
- 数据结构《链式栈的存储》
- 栈的链式存储结构
- 栈的链式存储实现
- 栈的链式存储结构
- 数据结构 - 栈的链式存储
- 栈的链式存储结构
- 05_线性表的链式存储结构---双向链表
- RTP over RTSP(TCP)
- WIN10电脑,安装双系统(CentOS 6.4) 各种出错
- 项目调错笔记
- 06_栈的顺序存储
- 07_栈的链式存储
- RTP协议解析
- 08_栈的实例1---括号匹配
- 09_栈的实例2---算术表达式(四则运算)
- Github全面详解-20什么是开源
- Mina用户手册
- 10_栈的递归实例1---斐波那契尔序列
- pbb找实习之厦门美团
- 11_栈的递归实例2---strlen实现