C数据结构-链栈

来源:互联网 发布:淘宝电影票能退吗 编辑:程序博客网 时间:2024/05/16 14:21

链栈

链栈的设计依赖于笔者之前设计的链表,详情请看《C数据结构-线性表之单链表 》。

#ifndef LINKEDSTACK_H#define LINKEDSTACK_H#include "LinkedList.h"typedef linked_list linked_stack;/** * 创建链表栈 * @return */linked_stack *linked_stack_create();/** * 入栈 * @param pstack 栈指针 * @param p 入栈元素的指针 * @return 成功:1,失败:0 */int linked_stack_push(linked_stack *pstack, elem_t *p);/** * 出栈 * @param pstack 栈指针 * @return 返回出栈元素的值 */elem_t linked_stack_pop(linked_stack *pstack);/** * 获取栈顶元素的值 * @param pstack * @return */elem_t linked_stack_top(linked_stack *pstack);/** * 判断栈是否为空 * @param pstack 栈指针 * @return 1为空,否则非空 */int linked_stack_empty(linked_stack *pstack);/** * 销毁栈 * @param pstack 栈指针 * @return 成功:1,失败:0 */int linked_stack_destroy(linked_stack *pstack);#endif // LINKEDSTACK_H

#include "LinkedStack.h"/** * 创建链表栈 * @return */linked_stack *linked_stack_create(){    return linked_list_create();}/** * 入栈 * @param pstack 栈指针 * @param p 入栈元素的指针 * @return 成功:1,失败:0 */int linked_stack_push(linked_stack *pstack, elem_t *p){    return linked_list_insert(pstack,p);}/** * 出栈 * @param pstack 栈指针 * @return 返回出栈元素的值 */elem_t linked_stack_pop(linked_stack *pstack){    elem_t temp;    linked_list_remove(pstack,0,&temp);    return temp;}/** * 获取栈顶元素的值 * @param pstack * @return */elem_t linked_stack_top(linked_stack *pstack){    elem_t temp;    linked_list_get(pstack,0,&temp);    return temp;}/** * 判断栈是否为空 * @param pstack 栈指针 * @return 1为空,否则非空 */int linked_stack_empty(linked_stack *pstack){    return (pstack->length == 0);}/** * 销毁栈 * @param pstack 栈指针 * @return 成功:1,失败:0 */int linked_stack_destroy(linked_stack *pstack){    return linked_list_destroy(pstack);}





原创粉丝点击