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

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; 
}
相关推荐
澈2074 小时前
C++并查集:高效解决连通性问题
java·c++·算法
旖-旎5 小时前
深搜练习(单词搜索)(12)
c++·算法·深度优先·力扣
企客宝CRM6 小时前
2026年中小企业CRM选型指南:企客宝CRM处于什么位置?
android·算法·企业微信·rxjava·crm
橙淮6 小时前
二叉树核心概念与Java实现详解
数据结构·算法
米罗篮7 小时前
DSU并查集 & 拓展欧几里得-逆元
c++·经验分享·笔记·算法·青少年编程
橙淮7 小时前
双指针法:高效算法解题的利器
算法
初心未改HD7 小时前
深度学习之MLP与反向传播算法详解
人工智能·深度学习·算法
刀法如飞7 小时前
【Go 字符串查找的 20 种实现方式,用不同思路解决问题】
人工智能·算法·go
技术小黑9 小时前
CNN算法实战系列03 | DenseNet121算法实战与解析
pytorch·深度学习·算法·cnn