栈的链式存储实现
来源:互联网 发布:黑帮之地mac 编辑:程序博客网 时间:2024/05/17 04:18
#ifndef _LINK_STACK_LIST_H_#define _LINK_STACK_LIST_H_#pragma once/************************************************************************//* 栈的链式存储实现LinkStackList *//************************************************************************//**栈表链式存储实现*/typedef struct LinkStackListNode{LinkStackListNode* Next;ElemType data;}LinkStackListNode,*LinkStackListNodePtr;typedef struct LinkStackList{LinkStackListNodePtr top;int count;}LinkStackList;/*初始化操作,建立一个空的栈S。*/Status InitStack(LinkStackList* S);/*若栈存在,则销毁它*/Status DestoryStack(LinkStackList* S);/*将栈清空*/Status ClearStack(LinkStackList* S);/*若栈为空返回true,否则返回false*/bool StackEmpty(LinkStackList S);/*若栈不为空,返回栈顶元素*/Status GetTop(LinkStackList S,int* e);/*如果栈存在,插入新元素e到栈S中,并成为新的栈顶元素*/Status Push(LinkStackList* S,int e);/*删除栈S中栈顶元素,并返回这个位置的元素值e*/Status Pop(LinkStackList* S,int *e);/*返回栈S的元素个数*/int StackLength(LinkStackList S);/*遍历栈S元素*/Status TraverseStack(LinkStackList S);#endif//_LINK_STACK_LIST_H_
#include "stdafx.h"#include "LinkStackList.h"/*初始化操作,建立一个空的栈S。*/Status InitStack(LinkStackList* S){LinkStackListNodePtr top = (LinkStackListNodePtr)malloc(sizeof(LinkStackListNode));top->Next = NULL;S->top = top;S->count = 0;return OK;}/*若栈存在,则销毁它*/Status DestoryStack(LinkStackList* S){ClearStack(S);free(S);S = NULL;return OK;}/*将栈清空*/Status ClearStack(LinkStackList* S){if(StackEmpty(*S))return OK;LinkStackListNodePtr top = S->top;while(top->Next){LinkStackListNodePtr delNode = top;S->top = delNode->Next;free(delNode);S->count--;top = S->top;}return OK;}/*若栈为空返回true,否则返回false*/bool StackEmpty(LinkStackList S){return S.count ==0 && S.top->Next == 0;}/*若栈不为空,返回栈顶元素*/Status GetTop(LinkStackList S,int* e){if(StackEmpty(S))return ERROR;*e = S.top->data;return OK;}/*如果栈存在,插入新元素e到栈S中,并成为新的栈顶元素*/Status Push(LinkStackList* S,int e){LinkStackListNodePtr newNode = (LinkStackListNodePtr)malloc(sizeof(LinkStackListNode));newNode->data = e;newNode->Next = S->top;S->top = newNode;S->count++;return OK;}/*删除栈S中栈顶元素,并返回这个位置的元素值e*/Status Pop(LinkStackList* S,int *e){LinkStackListNodePtr top = S->top;*e = top->data;S->top = top->Next;free(top);S->count--;return OK;}/*返回栈S的元素个数*/int StackLength(LinkStackList S){return S.count;}/*遍历栈S元素*/Status TraverseStack(LinkStackList S){if(StackEmpty(S))return OK;LinkStackListNodePtr top = S.top;int i = S.count;while(top->Next){std::cout<<"第"<<i--<<"个元素为:"<<top->data<<std::endl;top = top->Next;}return OK;}
0 0
- 栈的链式存储实现
- 栈的链式存储实现
- 栈的链式存储实现
- 栈---链式存储实现
- 栈的链式存储结构的实现
- 栈的链式存储结构C++实现
- 栈的链式存储 - API实现
- 栈的链式存储结构及实现
- 栈的链式存储结构及实现
- 线性结构--->栈的链式存储实现
- 栈的链式存储结构以及实现
- 栈的链式和数组存储实现
- 使用Golang实现栈的链式存储
- 栈的链式存储实现c语言
- 栈的链式存储结构和实现
- 栈的顺序存储实现和链式存储实现
- C++栈的顺序存储和链式存储的实现
- 栈的顺序存储及链式存储的分别实现
- 线性表链式存储结构实现 --单向循环链表
- 线性表链式存储结构实现 --双向循环链表
- linux下监测命令执行结果的工具watch小结
- 栈的顺序存储实现
- 黑马程序员——常用集合特点及其方法
- 栈的链式存储实现
- 和风天气-城市ID-sqlite数据库构建
- 异步并发保持数据一致性
- 黑马程序员——集合的特殊功能之迭代器
- QT实现文件查找显示列表功能
- 做好SEO排名其实不难
- Java爬取有道图片
- 黑马程序员——集合的特殊功能之HashSet集合如何保证元素的唯一性
- 音频