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

📄 capp.cpp

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

//测试类的实现

#include <iostream>
using namespace std;

#include "CApp.h"

#include "CNode.h"
#include "CLinkStack.h"

CApp::CApp()
{
	p=NULL;
}

char CApp::menu(void)
{
	char c;
	
	cout<<"1.进栈"<<endl;
	cout<<"2.出栈"<<endl;
	cout<<"3.清空"<<endl;
	cout<<"4.判断是否为空"<<endl;
	cout<<"5.新建栈 (由原来的栈复制构造)"<<endl;
	cout<<"6.复值   (把原来的栈赋值给新建的栈)"<<endl;
	cout<<"7.比较   (比较两年栈是否相同)"<<endl; 
	cout<<"0.退出"<<endl;
	cout<<'>';
	cin>>c;
	return c;
}
void CApp::run(void)
{
	char choice;

	while(1)
	{
		choice=menu();
		switch(choice)
		{
		case '1':
			{
				push();
				print();
				break;
			}
		case '2':
			{
				pop();
				print();
				break;
			}
		case '3':
			{
				del();
				print();
				break;
			}
		case '4':
			{
				empty();
				print();
				break;
			}
		case '5':
			{
				create();
				print();
				break;
			}
		case '6':
			{
				set();
				print();
				break;
			}
		case '7':
			{
				comp();
				print();
				break;
			}
		case '0':
			{
				break;
			}
		default:
			{
				cout<<"请选择菜单中的选项!"<<endl;
				break;
			}
		}
		if(choice=='0')
		{
			break;
		}
	}
}
void CApp::push(void)
{
	char input;
	CNode c;

	cout<<"输入一个字符:";
	cin>>input;
	c.setData(input);
	if(!s.push(c))
	{
		cout<<"内存分配错误!"<<endl;
	}
}
void CApp::pop(void)
{
  CNode c;
  if(!s.pop(c))
  {
	  cout<<"栈为空,出栈失败!"<<endl;
  }
  else
  {
	  cout<<"被出栈的元素为: "<<c.getData()<<endl;
  }

}
void CApp::del(void)
{
	s.makeEmpty();
}

void CApp::empty(void)
{
	if(s.isEmpty())
	{
		cout<<"栈为空!"<<endl;
		return;
	}
	cout<<"栈不空!"<<endl;
}
void CApp::print(void)
{
	cout<<"你现在有的栈为:"<<endl;
	if(p!=NULL)
	{
		cout<<"栈1: ";
		s.print();

		cout<<"栈2: ";
        p->print();
	}
	else
	{
		cout<<"栈1: ";
	    s.print();
	}
	cout<<endl;
}
void CApp::create(void)
{
	if(p!=NULL)
	{
		p->makeEmpty();
		delete p;
	}
	p=new CLinkStack(s);
    if(p==NULL)
	{
		cout<<"内存分配错误!"<<endl;
		return;
	}
}
void CApp::set(void)
{
	if(p==NULL)
	{
		cout<<"不能赋值,新栈没建立!"<<endl;
		return ;
	}
	*p=s;
}
void CApp::comp(void)
{
	if(p==NULL)
	{
		cout<<"不能赋值,新栈没建立!"<<endl;
		return ;
	}
	if(*p==s)
	{
		cout<<"两个栈相等!"<<endl;
	}
	else
	{
		cout<<"两个栈不相等!"<<endl;
	}
}

⌨️ 快捷键说明

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