数据结构-堆栈
来源:互联网 发布:数据库substring 编辑:程序博客网 时间:2024/04/30 04:31
堆栈(或栈stack)
定义:堆栈(或栈stack)是限定插入和删除运算只能在同一端进行的线性数据结构。是限定插入和删除运算只能在同一端进行的线性数据结构.
描述 :栈是后进先出(last-in-first-out LIFO)的动态线性数据结构.允许插入和删除元素的一端称为栈顶,另一端称为栈底。若栈中无元素,则称为空栈。
S=(a0,a1,…,an-1)
算法伪代码:
ADTStack {
数据:
零个或多个元素的线性序列(a0,a1,...,an-1), 其最 大允许长度为MaxStackSize。对于它插入和删除运算都限制在同一端进行,并遵循LIFO原则。
运算:
Create(): 建立一个空栈。
Destroy():撤消一个栈。IsEmpty():若栈空,则返回true;否则返回 false。
IsFull(): 若栈满,则返回true; 否则返回 false。
Top(x):返回栈顶元素。若操作成功,则返回true;否则返回false。
Push(x): 在栈顶插入元素x。
Pop(): 从栈中删除栈顶元素。
Clear(): 清除堆栈中全部元素。
};
算法如下:C语言实现:
#include "stdio.h"#ifndef ElemType#define ElemType int /*在实际应用中,将ElemType定义成实际类型*/#endif/*typedef int ElemType;*/#ifndef SQ_Stack /*或 #if !defined(SQ_Stack)*/#define SQ_Stack#ifndef MaxSize/*MaxSize未定义过则定义*/#define MaxSize 100 /*顺序栈的容量,栈存储元素个数*/#endif typedef struct{ElemType data[MaxSize];/*定义存储栈中元素的数组*/int top; /*栈顶位置*/}sqStack;void InitStack(sqStack *S)/*初始化栈*/ {S->top=-1;} int Empty(sqStack *S)/*判栈空*/{return S->top==-1?1:0;}int Full(sqStack *S)/*判栈满*/{return S->top==MaxSize-1;}int Push(sqStack *S,ElemType x)/*入栈*/{if(Full(S))return 0;/*{printf("栈满!\n");}*/ S->data[++S->top]=x;return 1;}int Pop(sqStack *S,ElemType *x)/*出栈*/ {if(Empty(S))return 0;/*{printf("栈空!");}*/ *x=S->data[S->top--];return 1;}int GetTop(sqStack *S,ElemType *x)/*取栈顶元素*/{if(Empty(S))return 0;/*{printf("栈空!");}*/ *x=S->data[S->top]; return 1;}#endifC++实现:
#include <iostream.h>//using namespace std;#ifndef SQ_Stack2 //或 #if !defined(SQ_Stack)#define SQ_Stack2template<class ElemType>class sqStack{ElemType *data,X; //定义存储栈中元素的数组int top,MaxSize; //栈顶位置,顺序栈的容量public://初始化栈sqStack(int n=100):top(-1),MaxSize(n),X(0){data=new ElemType[n];} int Empty(){return top==-1?1:0;}//判栈空int Full(){return top==MaxSize-1;}//判栈满int Push(ElemType x)//入栈{if(Full())return 0;//{printf("栈满!\n");} data[++top]=x;return 1;}ElemType Pop()//出栈 {if(Empty())return X;//{printf("栈空!");} return data[top--];}ElemType GetTop()//取栈顶元素{if(Empty())return X;//{printf("栈空!");} return data[top];}};#endif
0 0
- 数据结构:堆栈
- 数据结构--堆栈
- 数据结构--堆栈
- 数据结构-堆栈
- 数据结构 堆栈
- 内存堆栈和数据结构堆栈
- 内存堆栈和数据结构堆栈
- 堆栈数据结构 stack.h
- C#数据结构篇(堆栈)
- 堆栈数据结构的实现~
- 数据结构之堆栈
- 数据结构练习:堆栈
- java数据结构之堆栈
- 数据结构---堆栈(C#)
- 【数据结构总结】堆栈
- 用链表实现堆栈数据结构
- 数据结构---->堆栈的使用
- 【数据结构与算法】堆栈
- 组合优于继承
- CentOS简单使用
- 关系数据库(一)
- mybatis结合log4j打印SQL日志
- Redis Cluster部署、管理和测试
- 数据结构-堆栈
- 暴力破解(枚举法)三羊
- 我就自己看看3
- Android training课程学习笔记...
- Linux环境下搭建ftp服务器
- IT技术->BIOS报警声
- Linux与JVM的内存关系分析
- 信息安全技术实验三邮件服务安全实验
- window配置redis(个人记录)