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

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; 
}
相关推荐
宇钶宇夕34 分钟前
西门子 S7-200 SMART PLC 编程:转换 / 定时器 / 计数器指令详解 + 实战案例(指令讲解篇)
运维·算法·自动化
我叫汪枫34 分钟前
Spring Boot图片验证码功能实现详解 - 从零开始到完美运行
java·前端·javascript·css·算法·html
l1t1 小时前
how to build tbox xml into the demo
xml·linux·c语言·parser·tbox
lifallen1 小时前
揭秘KafkaStreams 线程缓存:NamedCache深度解析
数据结构·算法·缓存·kafka·apache
我的知识太少了1 小时前
P1122 最大子树和
算法
郝学胜-神的一滴1 小时前
深入浅出 C++20:新特性与实践
开发语言·c++·程序人生·算法·c++20
Jelena技术达人2 小时前
淘宝/天猫按图搜索(拍立淘)item_search_img API接口实战指南
算法·图搜索算法
九皇叔叔2 小时前
【2】标识符
c语言
Adorable老犀牛2 小时前
阿里云-基于通义灵码实现高效 AI 编码 | 8 | 上手实操:LeetCode学习宝典,通义灵码赋能算法高效突破
学习·算法·leetcode
望获linux2 小时前
【实时Linux实战系列】规避缺页中断:mlock/hugetlb 与页面预热
java·linux·服务器·数据库·chrome·算法