实现对顺序表的入栈出栈操作、利用栈将十进制转化成二进制输出【数据结构实验报告】

2023-05-16

文章目录

    • 一、入栈、出栈操作
    • 二、利用栈操作将十进制的数转化为二进制

一、入栈、出栈操作

#include<iostream>
using namespace std;
#define MAXSIZE 10  //栈最大容量 

typedef int SElemType;  //别名int类型,表示栈元素 
//顺序栈的存储结构
typedef struct
{
	SElemType *base;  //栈底指针 
	SElemType *top;  //栈顶指针
	int stacksize;  //可用最大容量 
}SqStack;  //定义一个栈 

//创建一个空栈 
bool CreateStack(SqStack &S)  //引用类型SqStack 
{
	S.base= new SElemType[MAXSIZE];  //给栈底赋值一个空的int型数组
	if(!S.base) return(0);  //存储分配失败 
	S.top= S.base;  //初始top==base,栈顶等于栈底
	S.stacksize= MAXSIZE;  //设置栈的最大容量 
	return(1);
}

//入栈(压栈操作):插入元素e为新的栈顶元素 
bool Push(SqStack &S, SElemType e)
{
	if(S.top-S.base==S.stacksize) return(0);  //栈满报错
	*S.top++=e;  //给栈顶指针赋值,并向上移动栈顶指针
	return(1); 
} 

//出栈(弹栈):删除S的栈顶元素,返回被出栈的数 
bool Pop(SqStack &S, SElemType e)
{
	if(S.top==S.base) return(0);  //栈空
	e= *--S.top;  //出栈后栈顶减1 
	return(1); 
}

//获得栈元素:返回栈顶元素,不修改栈指针 
SElemType GetTop(SqStack &S)
{
	if(S.top != S.base)  //若栈不为空 
		return *(S.top-1);
}

int main()
{
	SElemType E;  //用于存放出栈后的元素 
	SqStack s;
	CreateStack(s);  //创建一个空栈 
	
	//入栈三个元素:77、88、99
	Push(s, 77); 
	Push(s, 88);  
	Push(s, 99); 
	cout << "入栈后栈顶:" << GetTop(s) << endl;  //输出栈顶
	
	Pop(s, E);  //出栈一次 
	cout << "出栈后栈顶:" << GetTop(s) << endl;  //输出栈顶
}

1-1

二、利用栈操作将十进制的数转化为二进制

#include<iostream>
using namespace std;
#define MAXSIZE 10  //栈最大容量 

typedef int SElemType;  //别名int类型,表示栈元素 
//顺序栈的存储结构
typedef struct
{
	SElemType *base;  //栈底指针 
	SElemType *top;  //栈顶指针
	int stacksize;  //可用最大容量 
}SqStack;  //定义一个栈 

//创建一个空栈 
bool CreateStack(SqStack &S)  //引用类型SqStack 
{
	S.base= new SElemType[MAXSIZE];  //给栈底赋值一个空的int型数组
	if(!S.base) return(0);  //存储分配失败 
	S.top= S.base;  //初始top==base,栈顶等于栈底
	S.stacksize= MAXSIZE;  //设置栈的最大容量 
	return(1);
}

//入栈(压栈操作):插入元素e为新的栈顶元素 
bool Push(SqStack &S, SElemType e)
{
	if(S.top-S.base==S.stacksize) return(0);  //栈满报错
	*S.top++=e;  //给栈顶指针赋值,并向上移动栈顶指针
	return(1); 
} 

//出栈(弹栈):删除S的栈顶元素,返回被出栈的数 
bool Pop(SqStack &S, SElemType e)
{
	if(S.top==S.base) return(0);  //栈空
	e= *--S.top;  //栈顶减1 
	return(1); 
}

//获得栈元素:返回栈顶元素,不修改栈指针 
SElemType GetTop(SqStack &S)
{
	if(S.top != S.base)  //若栈不为空 
		return *(S.top-1);
}

int main()
{
	int N, r=2, j;  //因为是二进制,所以r=2 
	SElemType E;  //存放被出栈的数 
	//SqStack<int>a(10);
	SqStack s;
	CreateStack(s);  //创建一个空栈 
	cout << "请输入要转换的数据:" << endl;
	cin >> N;
	//将十进制转成二进制:依次入栈 
	while(N!=0)
	{
		j=N%r;
		Push(s,j);
		N=N/r;
	}
	//输出栈元素:二进制数 
	while(s.top != s.base)
	{
		cout << GetTop(s);
		Pop(s, E); 		  
	}		 
}

2-1
2-2
2-3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现对顺序表的入栈出栈操作、利用栈将十进制转化成二进制输出【数据结构实验报告】 的相关文章

随机推荐