【数据结构之顺序栈的基本运算】

//顺序栈
public class OrderStack {
	//(1)置空栈
	void InitStack(SeqStack *S){
		S->top = -1;
	}

	//(2)判断栈空
	int StackEmpty(SeqStack *S){
		return S->top == -1;
	}

	//(3)判断栈满
	int StackFull(SeqStack *S){
		return S->top == StackSize-1;
	}

	//(4)进栈
	void push(S,x){
		if(StackFull(S)){
			Erro("Stack overflow");//上溢,退出运行
		}
		S->data[++S->top]=x;//栈顶
	}
	//(5)退栈
	DataType Pop(S){
		if(StackEmpty(S)){
			Error("Stack underflow");//下溢,退出运行
		}
		return S->data[S->top--];//栈顶元素出栈后,将栈顶指针下移一位
	}
	//(6)取栈顶元素
	DataType StackTop(S){
		if(StackEmpty(S)){
			Error("Stack underflow");//下溢,退出运行
		}
		return S->data[S->top];//
	}
}

时间: 2024-08-25 15:35:03

【数据结构之顺序栈的基本运算】的相关文章

浅谈数据结构之顺序栈(三)

栈:是限定仅在表尾进行插入与删除操作的线性表.我们把允许插入与删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的称为空栈.栈的插入操作,叫作进栈,也叫压栈.入栈,类似于子弹入弹夹:栈的删除操作,叫作出栈,也叫弹栈,如同弹夹中的子弹出夹.注意:栈的定义中的"表尾"指的是"栈顶",而不是"栈底". 首先,栈是一个线性表,也就是说:栈具有线性结构,即前驱后继关系:只不过它是一个特殊的线性表而已,它的特殊之处在于限制了这个线性表的插入与删除位置,它始

数据结构之顺序栈基本操作SqStack

顺序栈SqStack 基本操作 1 Status InitStack()//构造一个空栈S 2 Status DestroyStack()//销毁栈S,S不再存在 3 Status ClearStack()//把S置为空栈 4 Status StackEmpty()//若S为空栈,则返回true,否则返回false 5 int StackLength()//返回S的元素个数,即栈的长度 6 Status GetTop(SElemType &e)//若栈不空,则用e返回S的栈顶元素,并返回OK,否

数据结构之顺序栈(C++版)

#include <iostream>#include <stdlib.h>#define MAXLISTSIZE 100 //预设的存储空间最大容量using namespace std; typedef string ElemType;typedef struct{ ElemType *base; //存储空间基址 int top; //栈顶指针 int stacksize; //允许的最大存储空间以元素为单位}Stack; void InitStack(Stack &

数据结构库——顺序栈的概念及实现

1,栈的定义: 1,栈是一种特殊的线性表: 2,栈仅能在线性表的一端进行操作: 1,栈顶(Top):允许操作的一端: 2,栈底(Bottom):不允许操作的一端: 2,栈的特性: 1,后进先出(Last In First Out)(只有一个特性): 3,栈的操作(创销进出顶大清): 1,创建栈(Stack()): 2,销毁栈(~Stack()): 3,进栈(push()): 4,出栈(pop()): 5,获取栈顶元素(top()): 6,获取栈的大小(size()): 7,清空栈(clear()

数据结构:顺序栈

这是严蔚敏吴伟民版本的算法,感觉没<大话数据结构>里面的简单易懂 这个版本里面的top指针指向下一个空单元格,这个其实是有些问题的,因为栈满的时候,top是指向栈外的,有些不安全. 1 #ifndef SQ_STACK_HEAD 2 #define SQ_STACK_HEAD 3 #include <stdio.h> 4 #include <stdlib.h> 5 #define Status int 6 #define OVERFLOW -1 7 #define OK

【数据结构】顺序栈的实现(c++)

头文件: #pragma once #include <iostream> #include <assert.h> using namespace std; template<class Type> class SeqStack { public: SeqStack(size_t sz = INIT_SZ); ~SeqStack(); public: bool empty()const; bool full()const; void show()const; bool

【数据结构】顺序栈

#include <STDIO.H> #include <STRING.H> #include <STDLIB.H> typedef struct SeqStack { int length; int top; char *data; }seqstack; seqstack* CreatStack(seqstack *s,int n) { s=(seqstack *)malloc(sizeof(seqstack)+n*sizeof(char)); if(s==NULL)

顺序栈的总结

基本数据结构之-顺序栈 栈是一种先进后出的数据结构,我们可以使用一个数组来模拟栈的这种结构,将数组的尾部当做栈的栈顶似乎是一个不错的选择(插入和移除元素是不涉及到数据的移动),也可以很好的控制数组的长度,和数据的进栈和出栈! 首先先解析一下顺序栈的数据结构 1 需要一个数据域来存储数据 考虑到可能存储自定义的数据类型,所以我们选择存储每个数据的开始的地址 (void **stack) 2 需要一个值来记录当前的数据域的长度 (size) 3 需要一个值来记录当前的容器的长度 typedef st

栈的基本运算实现

栈(stack)是一种只能在一端进行插入和删除操作的线性表.表中允许进行插入和删除操作的一端称为栈顶.栈顶的当前位置是动态的,由一个称为栈顶指针的位置指示器指示.表的另一端称为栈底.不含数据元素的栈称为空栈.栈的插入操作称为压栈或进栈,栈的删除操作称为退栈或出栈.栈的主要特点是"后进先出(last in first out,LIFO)". 1. 顺序栈 假定栈的元素个数不超过MaxSize,所有的元素都具有同一数据类型ElemType.采用栈指针s建立和使用顺序栈.在由s指向的顺序栈中