栈ADT
来源:互联网 发布:恒扬数据市值 编辑:程序博客网 时间:2024/05/29 07:54
栈是一种特殊的结构,具有先进后出的性质。由于栈是一个表,因此任何实现表的方法都能实现栈。
使用数组实现
(1)类型声明
#ifndef _Stack_hstruct StackRecord;typedef struct StackRecord *Stack;int IsEmpty( Stack S );int IsFull( Stack S);Stack CreateStack( int MaxElements );void DisposeStack( Stack S);void MakeEmpty( Stack S);void Push( ElementType x, Stack S);ElementType Top( Stack S);void Pop( Stack S);ElementType TopAndPop( Stack S );#endif;#define EmotyTOS ( -1 )#define MinStackSize ( 5 )struct Node{int Capacity;int TopOfStack;ElementType *Array;};
(2) 栈的创建
Stack CreateStack(int MaxElements){Stack S;if(MaxElements <MinStackSize) Error("Stack size is to small");S=malloc( sizeof( struct StackRecord ));if( S=NULL )FatalError( "out of space!!!" );S->Array=malloc( sizeof( ElementType ) * MaxElements );if(S->Array==NULL) FatalError( "Out of space!!!" ); S->Capacity=MaxElements; MakeEmpty( S ); return S;}
(3)释放栈
void DisposeStack( Stack S ){ if( S != NULL ) { free( S->Array ); Free( S ); }}
(4) 检测一个栈是否为空
int IsEmpty( Stack S){return S->TopOfStack == EmptyTOS;}
(5)创建一个空栈
void MakeEmpty( Stack S){S->TopOfStack=EmptyTOS;}
(6)进栈
void Push ( ElementType x,Stack S){if( IsFull( S ) ) Error( "FULL stack" ); else S->Array[ ++S->TopOfStack ] = x;}(7)将栈顶返回
ElementType Top( Stack S ){if( !IsEmpty( S ) ){return S->Array[ S->TopOfStack ];}Error( "Empty Stack" );return 0;}(8)从栈弹出元素
void pop( Stack S){if( IsEmpty ( S ) ) Error( "Empty stack" ); else S->TopOfStack--;}
- 栈ADT
- ADT栈
- 栈ADT
- 栈ADT
- 栈ADT
- 栈ADT
- 【数据结构】回顾栈ADT和队ADT
- 栈ADT实现
- 栈 ADT 结构
- 栈ADT实现
- 栈(ADT)
- 数据结构 -- 栈ADT
- ADT
- adt
- ADT
- ADT
- ADT
- ADT
- MIPI DBI\DPI\DSI简介
- 彻底理解指针第二篇
- java zip files
- IDC
- ios 常用第三方类库
- 栈ADT
- 黑马程序员_<<String练习>>
- Git 命令大全
- 算法导论 16.1-1活动选择问题的动态规划算法 答案
- C#和.NET基础知识——学习笔记(四)
- Qt5.1.1 for android 环境配置
- android下基本json串的生成与解析
- 线程执行器
- java按字节截取中英文混合字符串