第三章算法设计题1

2021/11/14 11:40:04

本文主要是介绍第三章算法设计题1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第三章算法设计题1

题目描述

在这里插入图片描述

代码实现

#pragma once
#include <iostream>
using namespace std;

#define MAXSIZE 6

//双栈数据结构定义
typedef struct
{
	int top[2], bot[2];	//栈顶和栈底指针
	int* v;				//栈数组
	int m;				//栈最大可容纳元素个数
}DblStack;

//双栈初始化
void InitStack(DblStack& S)
{
	S.v = new int[MAXSIZE];
	S.m = MAXSIZE;
	S.top[0] = -1;
	S.top[1] = S.m;
}



//判断栈空
bool IsEmptyStack(DblStack& S)
{
	if (S.top[0] == -1 && S.top[1] == S.m)
	{
		return true;
	}
		
	else
	{
		return false;
	}
		
}

//判断栈满
bool IsFullStack(DblStack& S)
{
	if (!IsEmptyStack(S) && S.top[1] - S.top[0] == 1)
	{
		return true;
	}
		
	else
	{
		return false;
	}
		
}


//左边进栈操作
void PushLeft(DblStack& S,int e)
{//rl等于0进左栈,等于1进右栈
	if (IsFullStack(S))
	{
		cout << "栈满" << endl;
		exit(0);
	}

	S.v[++S.top[0]] = e;
	
}
//右边进栈操作
void PushRight(DblStack& S, int e)
{
	if (IsFullStack(S))
	{
		cout << "栈满" << endl;
		exit(0);
	}
	
	S.v[--S.top[1]] = e;

}



//左边出栈
int PopLeft(DblStack& S)
{
	if (IsEmptyStack(S))
	{
		cout << "栈空" << endl;
		exit(0);
	}
		
	return S.v[S.top[0]--];
}


//右边出栈
int PopRight(DblStack& S)
{
	if (IsEmptyStack(S))
	{
		cout << "栈空" << endl;
		exit(0);
	}

	return S.v[S.top[1]++];
}

//遍历双栈
void printDblStack(DblStack stack)
{
	//输出左栈
	for (int i = 0; i <= stack.top[0]; i++) 
	{
		cout << stack.v[i] << " ";
	}
	//输出右栈
	for (int i = stack.top[1]; i < stack.m; i++)
	{
		cout<< stack.v[i]<<" ";
	}
	cout<<endl;
}


int main()
{
	DblStack stack;
	//初始化双栈
	InitStack(stack);											
    //判断总体是否为空栈
	if (IsEmptyStack(stack))
	{
		cout << "空" << endl;
	}
	else
	{
		cout << "非空" << endl;
	}
	//左栈进栈
	PushLeft(stack, 1);									
	PushLeft(stack, 2);
	PushLeft(stack, 3);	
	//右栈进栈
	PushRight(stack, 6);
	PushRight(stack, 5);
	PushRight(stack, 4);

	//判断总体是否为空栈
	if (IsEmptyStack(stack))
	{
		cout << "空" << endl;
	}
	else
	{
		cout << "非空" << endl;
	}
	//遍历
	printDblStack(stack);
	
	system("pause");
	return 0;
}

运行结果

在这里插入图片描述



这篇关于第三章算法设计题1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程