这些都是头函数里的内容,也就是保存之后,可以直接
对其进行调用。其中的一个变量stacklen是用来记录栈
的长度的,其实,这个变量可以不要,只是刚开始写时
给它加上了,所以就按这样写了,感觉跟顺序表的写法
差不多
#include<iostream>
#include<stdlib.h>
#include<malloc.h>
using namespace std;
typedef int Status;
typedef int SElemType;
# define OK 1
# define ERROR 0
# define TRUE 1
# define FLASE 0
# define NULL 0
# define OVERFLOW -2
typedef struct{
SElemType * base;
SElemType * top;
int stacksize;
int stacklen;
}SqStack;
# define STACK_INIT_SIZE 100 //存储空间的初始分配量
# define STACKINCREMENT 10 //存储空间分配增量
Status InitStack(SqStack &S) //构造一个空栈S
{
S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
S.stacklen = 0;
return OK;
}
Status DestroyStack(SqStack &S) //销毁栈S,S不在存在
{
free(S.base);
return OK;
}
Status ClearStack (SqStack &S) //把S置为空栈
{
S.top = S.base;
S.stacklen = 0;
return OK;
}
Status StackEmpty(SqStack &S) //若S为空栈,则返回TRUE,否则返回FALSE
{
if(S.stacklen == 0)
return TRUE;
else
return FLASE;
}
Status StackLength(SqStack &S) //返回S的元素个数,即栈的长度
{
return S.stacklen;
}
Status GetTop(SqStack &S, SElemType &e) //若栈不空,则用e返回S的栈顶元素,
{
if(S.stacklen == 0)
return ERROR;
else
{
e = * (S.top-1);
return OK;
}
}
Status Push(SqStack &S, SElemType &e) //插入元素e为新的栈顶元素
{
if(S.stacklen == S.stacksize)
{
S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
* S.top++ = e;
S.stacklen++;
return OK;
}
Status Pop(SqStack &S, SElemType &e) //删除栈顶元素并用e返回其值
{
if(S.stacklen == 0)
return ERROR;
e = * --S.top;
S.stacklen--;
return OK;
}
Status DisplayStack(SqStack &S) //从栈底到栈顶依次对栈的元素进行访问
{
SElemType * p;
p = S.base;
while(p != S.top)
{
cout<<*p<<" ";
p++;
}
cout<<endl;
return OK;
}
分享到:
相关推荐
数据结构 顺序栈基本操作
顺序栈的基本操作和实现顺序栈的基本操作和实现
顺序栈是栈的一种类型,这里采用C++的模板来实现顺序栈
编写一个程序,实现顺序栈的各种基本运算,并在基础上完成以下功能: 1)初始化顺序栈; 2)判断顺序栈是否为空; 3)依次进栈元素a,b,c,d,e; 4)判断顺序栈是否为空; 5)输出栈长度; 6)输出从栈顶到栈底的元素; 7)...
C++实现顺序栈的常用操作,定义了一个顺序栈的类,做了一个循环菜单,包括:创建顺序栈,入栈,出栈,清空栈,计算顺序栈的元素个数,判断顺序栈是否为空,打印栈等操作。
掌握栈的基本操作实现方法。 2. 实验内容 建立含有若干个元素的顺序栈; 对已建立的顺序栈实现入栈、出栈、判栈空和判栈满等基本操作。 3.设计与编码 #include<stdio.h> #include<malloc.h> #define MAX_STACK 120 ...
分享一下我写的顺序栈基本操作,顺便蹭一下勋章哈哈哈,这个是c++写的,包含了创建一个空的顺序栈,并实现栈的入栈、出栈、返回栈的长度、返回栈顶元素、栈的遍历等基本算法
C语言实现顺序栈的常用操作,做了一个循环菜单,包括:创建顺序栈,入栈,出栈,清空栈,计算顺序栈的元素个数,判断顺序栈是否为空,打印栈等操作。
使用顺序栈实现括号匹配
数据结构中顺序栈基本功能的C实现,采用菜单格式,便于操作
数据结构课程中顺序栈和链栈的操作实现,实现语言为C语言
使用顺序线性表实现,含有如下功能: 1.创建栈; 2.销毁栈; 3.清空栈; 4.进栈; 5.出栈; 6.获取栈顶元素; 7.获取栈的大小。
C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
顺序栈使用数组来存储栈中的元素,并提供了压栈、出栈、判空、栈长度等基本操作。 顺序栈的核心功能包括压栈、出栈、判空和栈长度。压栈操作将新元素添加到栈的顶部,而出栈操作则是从栈的顶部删除元素。判空操作...
实现顺序栈或循环队列的存储 概要设计 1、定义循环队列的结构 2、返回循环队列的长度 3、访问循环队列元素 4、取循环队列的队头元素 5、在循环队列的队尾插入元素 6、删除循环队列的队头元素 7、清空循环队列...
计算机专业 数据结构课内试验 顺序栈,实现顺序栈的基本操作,包括建立顺序栈,完成顺序栈的基本操作:初始化、入栈、出栈、输出、销毁, 置栈空、求栈长、判顺序栈是否为空、栈满、取栈顶元素。
其c程序实现了顺序栈的基本操作,可用Microsoft Visual C++6.0 直接打开即可运行