⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.cpp

📁 棧的实现
💻 CPP
字号:
// app.cpp

//测试类的实现

#include "app.h"
#include "stack.h"
#include <iostream>
using namespace std;

testStack::testStack()
{
	ps=NULL;
}
void testStack::push(void)
{
	char element;
    cout<<"输入一个字符:";
    cin>>element;
    if(s.push(element))
	{
	}
}
void testStack::pop(void)
{
  char c;
  if(s.pop(&c))
  {
	  cout<<"出栈的字符为:"<<c<<endl;
  }
  else
  {
      cout<<"栈为空了,请不要出栈!"<<endl;
  }
}
void testStack::empty(void)
{
  if(s.IsEmpty())
  {
	  cout<<"(原栈)为空!"<<endl;
  }
  else
  {
	  cout<<"(原栈)不为空!"<<endl;
  }
}
void testStack::full(void)
{
	if(s.IsFulll())
	{
		cout<<"(原栈)满了!"<<endl;
	}
	else
	{
		cout<<"(原栈)还没满!"<<endl;
	}
}
void testStack::makeEmpty(void)
{
	s.makeEmpty();
}
char testStack::menu(void)
{
	char c;
	cout<<"\n";
	cout<<"1.进栈--------(原栈)"<<endl;
	cout<<"2.出栈--------(原栈)"<<endl;
	cout<<"3.栈是否空----(原栈)"<<endl;
	cout<<"4.栈是否为满--(原栈)"<<endl;	
	cout<<"5.清空栈------(原栈)"<<endl;
	cout<<"6.复制构造一个(新栈)"<<endl;
	cout<<"7.判断(新栈)与(原栈)是否相等"<<endl;
	cout<<"8.栈赋值--(原栈)赋值给(新栈)"<<endl;
	cout<<"0.退出栈操作"<<endl;
    cout<<">";
	cin>>c;
	return c;
}

void testStack::copyAndCreate(void)
{
	if(ps!=NULL)
	{
		delete ps;
	}
	ps=new CArrayStack(s);
	if(ps==NULL)
	{
		cout<<"内存不足!"<<endl;
		return ;
	}
}
void testStack::isEquel(void)
{
	if(ps==NULL)
	{
		cout<<"(新栈):没建立,不能比较!"<<endl;
		return;
	}
	else
	{
		if(s==(*ps))
		{
			cout<<"两个栈相等!"<<endl;
		}
		else
		{
			cout<<"两个栈不相等!"<<endl;
		}
	}
}
void testStack::printTwo(void)
{
	cout<<"(原栈):";
	s.Print();
	cout<<"(新栈):";
	if(ps!=NULL)
	{
		ps->Print();
	}
	else
	{
		cout<<"没建立!"<<endl;
	}
}
void testStack::set(void)
{
	if(ps!=NULL)
	{
	  *ps=s;
	}
	else
	{
		cout<<"(新栈):没建立,不能被赋值!"<<endl;
	}
}
void testStack::run(void)
{
	char choice;
	while(1)
	{
		choice=menu();
		switch(choice)
		{
		case '1':
			{
				push();
				printTwo();
				break;
			}
		case '2':
			{
			    pop();
				printTwo();
				break;
			}
		case '3':
			{
				printTwo();
				empty();
				break;
			}
		case '4':
			{
				printTwo();
				full();
				break;
			}
		case '5':
			{
                makeEmpty();
				printTwo();
				break;
			}
		case '6':
			{

				copyAndCreate();
				printTwo();
				break;
			}
		case '7':
			{	
				printTwo();
				isEquel();
				break;
			}
		case '8':
			{
				set();
				printTwo();
				break;
			}
		case '0':
			{
				break;
			}
		default:
			{
				cout<<"请选择菜单中提供的选项!!"<<endl;
				break;
			}
		}
		if(choice=='0')
		{
			break;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -