用双端链表实现通用栈
来源:互联网 发布:steam动态桌面软件 编辑:程序博客网 时间:2024/05/18 01:26
这篇 还是双端链表基础上实现,这里面只是在套组件,套写过的东西,就需要重新组合一下而已,也许以后在公司也就是这个样子,感觉C语言越来越强大了,还需要好好搞搞C语言,关于栈,不想多BB,感觉说啥概念没意思了,也就是上代码,这是如何实现的
stack.h文件
#ifndef _STACK_H_#define _STACK_H_#include "dlist.h"#include "tools.h"//栈的控制信息typedef struct Stack{ Dlist *dlist; //用双端链表的控制信息直接封装栈}Stack;//关于栈的接口Stack *init_stack(void); //栈的初始化void destroy_stack(Stack **stack); //栈的销毁void push(Stack *stack, void *value); //入栈Boolean pop(Stack *stack); //出栈Boolean get_top(Stack *stack, void **value); //得到栈顶元素Boolean is_stack_empty(Stack *stack); //判断栈是否为空int get_stack_count(Stack *stack); //得到栈的元素个数#endif
stack.c文件
#include "stack.h"//关于栈的接口Stack *init_stack(void) //栈的初始化{ Stack *stack = (Stack *)Malloc(sizeof(Stack)); stack->dlist = init_dlist(); return stack;}void destroy_stack(Stack **stack) //栈的销毁{ if(stack == NULL || *stack == NULL){ return ; } //先释放栈控制信息中双端链表,在释放栈的控制信息 destroy_dlist( &((*stack)->dlist) ); free(*stack); *stack = NULL;}void push(Stack *stack, void *value) //入栈{ if(stack == NULL || value == NULL){ return ; } push_front(stack->dlist, value);}Boolean pop(Stack *stack) //出栈{ if(stack == NULL || is_stack_empty(stack)){ return FALSE; } return pop_front(stack->dlist);}Boolean get_top(Stack *stack, void **value) //得到栈顶元素{ if(stack == NULL || is_stack_empty(stack)){ return FALSE; } if(value != NULL){ get_front(stack->dlist, value); } return TRUE;}Boolean is_stack_empty(Stack *stack) //判断栈是否为空{ return get_stack_count(stack) == ZERO; }int get_stack_count(Stack *stack) //得到栈的元素个数{ if(stack == NULL){ return -1; } return get_dlist_count(stack->dlist);}
60多行代码写完了,栈,还是双端链表给力。
0 0
- 用双端链表实现通用栈
- 通用栈的实现
- 栈 通用链表实现
- 通用栈(c实现)
- c语言实现通用数据结构(三):通用椎栈
- C语言实现通用数据类型栈结构
- 通用TitleAreaDialog的实现
- 实现通用触发器
- 通用堆排序实现
- gridview 通用分页实现
- 通用队列的实现
- 通用树的实现
- Excel通用导入实现
- 通用树的实现
- 通用dao实现
- Webservice接口通用实现
- Hibernate实现通用DAO
- yii2通用后台实现
- PopupWindow显示showAsDropDown和showAtLocation区别
- CentOS6.5编译安装CodeBlocks13.12
- checkStyle配置文件详细
- BSP树
- Hadoop 参数配置优化
- 用双端链表实现通用栈
- TCP网络程序设计
- 笔记杂类_coco_js
- 【Java EE (Struts2 + Spring + Hibernate)开发】 :Hibernate(二)之【HQL查询|条件查询|SQL查询】
- unity制作体积光实现丁达尔效应
- linux I2c设备注册
- 自定义竖直方向的seekbar(一)
- 数据库分表
- 内存优化--图片优化