我是靠谱客的博主 追寻鸵鸟,最近开发中收集的这篇文章主要介绍数据结构7-两栈共享空间,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include <iostream>
using namespace std;
const int MAXSIZE = 100;
struct People
{
int id;
string name;
int age;
};
/*实现两栈共享存储空间的构造,析构,入栈,出栈,
取栈顶元素,判断栈空,菜单*/
template <class Element>
class DoubleSeqStack
{
public:
DoubleSeqStack();
~DoubleSeqStack() {};
void push(Element x,int num);
Element pop(int num);
Element getTop(int num);
bool ifEmpty(int num);
void menu();
private:
Element DoubleSStack[MAXSIZE];
int top1,top2;
};
template <class Element>
DoubleSeqStack<Element>::DoubleSeqStack()
{
top1 = -1;
top2 = MAXSIZE;
}
template <class Element>
void DoubleSeqStack<Element>::push(Element x,int num)
{
if (top1 == top2 - 1) throw"上溢";
if (num == 1)
{
DoubleSStack[++top1] = x;
}
else if (num == 2)
{
DoubleSStack[--top2] = x;
}
}
template <class Element>
Element DoubleSeqStack<Element>::pop(int num)
{
Element x;
if (num == 1)
{
if (top1 == -1)throw "下溢";
x = DoubleSStack[top1--];
}
else if (num == 2)
{
if (top2 == MAXSIZE)throw "下溢";
x = DoubleSStack[top2++];
}
return x;
}
template <class Element>
Element DoubleSeqStack<Element>::getTop(int num)
{
Element x;
if (num == 1)
{
if (top1 == -1)throw "此栈为空";
x = DoubleSStack[top1];
}
else if (num == 2)
{
if (top2 == MAXSIZE)throw "此栈为空";
x = DoubleSStack[top2];
}
return x;
}
template <class Element>
bool DoubleSeqStack<Element>::ifEmpty(int num)
{
if (num == 1)
{
if (top1 == -1)return 1;
else return 0;
}
else if (num == 2)
{
if (top2 == MAXSIZE)return 1;
else return 0;
}
}
template <class Element>
void DoubleSeqStack<Element>::menu()
{
int choice=0;
int pId = 0;
string pName;
int pAge = 0;
int pos = 0;
People p1 = { pId, pName, pAge };
Element x;
int num = 0;
/*实现顺序栈的构造,析构,入栈,出栈,
取栈顶元素,判断栈空,菜单*/
cout <<"-----菜单-----"<< endl;
cout <<"1.取栈顶元素t2.判断是否为空"<< endl;
cout <<"3.入栈t4.出栈"<< endl;
cout <<"请输入你要实现的操作:";
cin >> choice;
cout << endl;
switch (choice)
{
case 1:
cout << "请输入操作的对象(栈1输入1,栈2输入2):";
cin >> num;
x = getTop(num);
cout<<"栈顶元素为:"<<x.id<<" "<<x.name<<" "<<x.age<<endl;
break;
case 2:
cout << "请输入操作的对象(栈1输入1,栈2输入2):";
cin >> num;
if (ifEmpty(num))
{
cout << "此栈为空" << endl;
}
else
{
cout << "此栈非空" << endl;
}
break;
case 3:
pId=0;
pAge=0;
pos=0;
cout << "请输入操作的对象(栈1输入1,栈2输入2):";
cin >> num;
cout << "请输入你要入栈的人物的id:";
cin >> pId;
cout << endl;
cout << "请输入你要入栈的人物的name:";
cin >> pName;
cout << endl;
cout << "请输入你要入栈的人物的age:";
cin >> pAge;
cout << endl;
p1={ pId, pName, pAge };
push(p1,num);
cout << endl;
break;
case 4:
cout << "请输入操作的对象(栈1输入1,栈2输入2):";
cin >> num;
x = pop(num);
cout << "出栈元素为:" << x.id << " " <<x.name << " " << x.age << endl;
break;
default:
cout << "你输入的数字有误,请重新输入" << endl;
break;
}
}
int main()
{
DoubleSeqStack<People> s1;
while (1)
{
s1.menu();
}
return 0;
}

最后

以上就是追寻鸵鸟为你收集整理的数据结构7-两栈共享空间的全部内容,希望文章能够帮你解决数据结构7-两栈共享空间所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部