`
java-mans
  • 浏览: 11389370 次
文章分类
社区版块
存档分类
最新评论

顺序栈的基本操作实现

 
阅读更多

这些都是头函数里的内容,也就是保存之后,可以直接

对其进行调用。其中的一个变量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++

    C++实现顺序栈的常用操作,定义了一个顺序栈的类,做了一个循环菜单,包括:创建顺序栈,入栈,出栈,清空栈,计算顺序栈的元素个数,判断顺序栈是否为空,打印栈等操作。

    数据结构顺序栈验证实验报告.pdf

    掌握栈的基本操作实现方法。 2. 实验内容 建立含有若干个元素的顺序栈; 对已建立的顺序栈实现入栈、出栈、判栈空和判栈满等基本操作。 3.设计与编码 #include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #define MAX_STACK 120 ...

    8583 顺序栈的基本操作.cpp

    分享一下我写的顺序栈基本操作,顺便蹭一下勋章哈哈哈,这个是c++写的,包含了创建一个空的顺序栈,并实现栈的入栈、出栈、返回栈的长度、返回栈顶元素、栈的遍历等基本算法

    顺序栈的常用操作 C语言

    C语言实现顺序栈的常用操作,做了一个循环菜单,包括:创建顺序栈,入栈,出栈,清空栈,计算顺序栈的元素个数,判断顺序栈是否为空,打印栈等操作。

    使用顺序栈实现括号匹配

    使用顺序栈实现括号匹配

    顺序栈基本功能的C实现源代码

    数据结构中顺序栈基本功能的C实现,采用菜单格式,便于操作

    数据结构课程:顺序栈和链栈的实现

    数据结构课程中顺序栈和链栈的操作实现,实现语言为C语言

    栈的顺序存储结构C实现

    使用顺序线性表实现,含有如下功能: 1.创建栈; 2.销毁栈; 3.清空栈; 4.进栈; 5.出栈; 6.获取栈顶元素; 7.获取栈的大小。

    C语言-顺序栈实现十进制转换为二进制-八进制-十六进制

    C语言-顺序栈实现十进制转换为二进制-八进制-十六进制

    顺序栈的实现,数据结构中的坚实支柱!.zip

    顺序栈使用数组来存储栈中的元素,并提供了压栈、出栈、判空、栈长度等基本操作。 顺序栈的核心功能包括压栈、出栈、判空和栈长度。压栈操作将新元素添加到栈的顶部,而出栈操作则是从栈的顶部删除元素。判空操作...

    实现顺序栈或循环队列的存储

    实现顺序栈或循环队列的存储 概要设计 1、定义循环队列的结构 2、返回循环队列的长度 3、访问循环队列元素 4、取循环队列的队头元素 5、在循环队列的队尾插入元素 6、删除循环队列的队头元素 7、清空循环队列...

    数据结构课内试验——顺序栈

    计算机专业 数据结构课内试验 顺序栈,实现顺序栈的基本操作,包括建立顺序栈,完成顺序栈的基本操作:初始化、入栈、出栈、输出、销毁, 置栈空、求栈长、判顺序栈是否为空、栈满、取栈顶元素。

    用c语言来实现顺序栈

    其c程序实现了顺序栈的基本操作,可用Microsoft Visual C++6.0 直接打开即可运行

Global site tag (gtag.js) - Google Analytics