栈的操作算法实现(数据结构)

1.实验目的

验证性实验:实现顺序栈各种基本运算的算法掌握栈的存储结构的表示和实现方法。

目的:领会顺序栈存储结构和掌握顺序栈中各种基本运算算法设计。

2.实验内容

验证性实验内容:编写一个程序sqstack.cpp,实现顺序栈(假设栈中元素类型ElemType为char的各种基本运算,并在此基础上设计一个程序exp3-1.cpp。

实现如下功能:

(1)初始化栈s。

(2)判断栈s是否非空。

(3)依次进栈元素a、b、c、d、e。

(4)判断栈s是否非空。

(5)输出出栈序列。

(6)判断栈s是否非空。

(7)释放栈。

3.具体代码实现及解释

cpp 复制代码
#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct
{
	ElemType data[MaxSize];
	int top;				//栈指针 
}SqStack; 					//声明顺序站类型 
void InitStack(SqStack *&s)		//初始化顺序站 
{
	s=(SqStack *)malloc(sizeof(SqStack));
	s->top=-1;
}
void DestroyStack(SqStack *&s)	//销毁顺序站 
{
	free(s);
}
bool StackEmpty(SqStack *s)	//判断栈空否 
{
	return(s->top==-1);
}
bool Push(SqStack *&s,ElemType e)	//进栈 
{
	if (s->top==MaxSize-1)		//栈满的情况,即栈上溢出 
		return false;
	s->top++;
	s->data[s->top]=e;
	return true;
}
bool Pop(SqStack *&s,ElemType &e)	//出栈 
{
	if(s->top==-1)			//栈为空的情况,即栈下溢出 
		return false;
	e=s->data[s->top];
	s->top--;
	return true; 
}
//#include "sqstack.cpp"			//包含顺序站的基本运算算法 
bool GetTop(SqStack *s,ElemType &e)
{
	if(s->top==-1)
		return false;
	e=s->data[s->top];
	return true;
}

int main()
{
	ElemType e;
	SqStack *s;
	printf("顺序栈s的基本运算如下:");
	printf("(1)初始化栈s\n");
	InitStack(s);
	printf("(2)栈为%s\n",(StackEmpty(s)?"空":"非空"));
	printf("(3)依次进栈元素a,b,c,d,e\n");
	Push(s,'a');
	Push(s,'b');
	Push(s,'c');
	Push(s,'d');
	Push(s,'e');
	printf("(4)栈为%s\n",(StackEmpty(s)?"空":"非空"));
	printf("(5)出栈序列:");
	while(!StackEmpty(s))
	{
		Pop(s,e);
		printf("%c ",e);
	 } 
	 printf("\n");
	 printf("(6)栈为%s\n",(StackEmpty(s)?"空":"非空"));
	 printf("(7)释放栈\n");
	 DestroyStack(s);
	 return 1; 
}
相关推荐
cjr_xyi17 小时前
AT1202Contest_c binarydigit 题解
c语言·c++·算法
atunet18 小时前
从算法优化到系统加速的多层级思考7
算法
Navigator_Z19 小时前
LeetCode //C - 1156. Swap For Longest Repeated Character Substring
c语言·算法·leetcode
Reart19 小时前
Leetcode 1143.最长公共子序列(720)
后端·算法
无相求码19 小时前
const vs #define:C语言常量定义的差异
c语言·算法
Android洋芋19 小时前
AI辅助C盘清理
c语言·开发语言·人工智能·ai辅助c盘清理
ScilogyHunter19 小时前
GCC/Clang 原始字符串详解
c语言·原始字符串
先吃饱再说19 小时前
LeetCode 226. 翻转二叉树
算法
剑锋所指,所向披靡!20 小时前
数据结构之关键路径
数据结构·算法
阿宇的技术日志20 小时前
漏桶、令牌桶、滑动窗口 三限流算法理解
算法·滑动窗口·漏桶·令牌桶