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

📄 cpp1.cpp

📁 自己做的关于两个栈在一个数组的实现方式
💻 CPP
字号:
# include<iostream.h> 
/************栈的定义**************/
class DouStack
{
	public:
		int top1,top2;
		int * stacka;	//用数组存储栈种元素
	public:
		DouStack();
		~DouStack(){}; 
		void push(int,int Num);
		int pop(int Num);
		int empty1(void) const {return top1==0;}
		int empty2(void) const {return top2==99;}
		int full() const {return top1==top2;}
		void clear(int Num)
				{
					if(Num==1) {top1=0;}
					else
						if(Num==2) {top2=99;}
						else cout<<"输入有误,没有此栈!"<<endl;
				}
};

/************栈的建立**************/
DouStack::DouStack():top1(0),top2(99)
{
	stacka=new int[100];
	if(stacka==NULL)
	{
		cout<<"存储分配失败!"<<endl;
//		exit(1);
		return;
	}
}

/************入栈操作**************/
void DouStack::push(int item,int Num)
{
	if(full())
	{
		cout<<"栈已满,不能入栈!"<<endl;
		return;
	}
	switch(Num)	//栈未满,入栈
	{
	case 1:
		{
			stacka[top1]=item;
			top1++;
			return;
		}
	case 2:
		{
			stacka[top2]=item;
			top2--;
			return;
		}
	default:return;
	}
}

/************出栈操作**************/
int DouStack::pop(int Num)
{
	switch(Num)
	{
	case 1:
		{
			if(empty1())
			{
				cout<<"栈1已空!"<<endl;
			}
			top1--;
			int data=stacka[top1];
			return data;
		}
	case 2:
		{
			if(empty2())
			{
				cout<<"栈2已空!"<<endl;
			}
			top2++;
			int data=stacka[top2];
			return data;
		}
	default:cout<<"没有此栈!";
	}

}

/************主函数**************/


void main()
{
	DouStack exp;
	int n1=0,n2=0;
	int a,i;
	cout<<"请输入要入栈1的元素的数量(数值小于101):"<<endl;
	cin>>n1;
	cout<<"请连续输入"<<n1<<"个数入栈1:"<<endl;
	if(n1!=0)
	{
		for(i=0;i<n1;i++)
		{
			cin>>a;
			exp.push(a,1);
		}
	}
	cout<<"请输入要入栈2的元素的数量(数值小于"<<100-n1<<",否则栈满):"<<endl;
	cin>>n2;
	cout<<"请连续输入"<<n2<<"个数入栈2:"<<endl;
	if(n2!=0)
	{
		for(i=0;i<n2;i++)
		{
			cin>>a;
			exp.push(a,2);
		}
	}
	cout<<"栈1中的元素为(从栈底到栈顶):"<<endl;
	for(i=0;i<n1;i++)
	{
		cout<<exp.stacka[i]<<" ";
	}
	cout<<endl<<"栈1中元素依次出栈:"<<endl;
	for(i=0;i<n1;i++)
	{
		cout<<exp.pop(1)<<" ";
	}
	cout<<endl<<"栈2中的元素为(从栈底到栈顶):"<<endl;
	for(i=99;i>99-n2;i--)
	{
		cout<<exp.stacka[i]<<" ";
	}
	cout<<endl<<"栈2中元素依次出栈:"<<endl;
	for(i=0;i<n2;i++)
	{
		cout<<exp.pop(2)<<" ";
	}
	cout<<endl;
}

⌨️ 快捷键说明

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