如题,我的两个代码文件里需要共用某个个栈来存放一些东西,有什么办法吗
解决方案 »
- 简单问题!!!!求助!@!
- 求解 关于皮肤的
- 这个四舍五入的问题也太怪了吧?
- 怎么将form内的控件全部"准备好"再把form显示出来?
- dataGrid中有若干行数据,有一个MouseUp事件可以得到点的行数,如果换了分辨率,即使双击标题栏使窗口最大化也可以触发MouseUp事件,请问怎么
- ```如何在外部终止for循环~~进来有分``
- 急:水晶报表打开方式问题请教
- 大家好,我怎么把一个对象序列化到这样一个JSON格式
- 请问一下这个有没有简单一点的写法?谢谢
- c#编程百例的例子怎么执行不了?报错怎么办?
- zegraph控件问题
- C# 如何让textbox控件中只能输入4个汉字或者8个英文字母?
#define STACK_INIT_SIZE 10//存储的初始分配struct Dblstack{
int *base1;
int *base2;
int *top1;
int *top2;
int stacksize;//当前分配的存储空间,以元素为单位
};
int Initstack(Dblstack &s)
{//构造一个空的顺序栈s
s.base1=new int[STACK_INIT_SIZE];
if(!s.base1){cout<<"申请内存失败!/n";return 0;}
s.top1=s.base1+1;
s.stacksize=STACK_INIT_SIZE;
s.base2=s.base1+s.stacksize;
s.top2=s.base2-1;
return 1;
}int emptystack(Dblstack &s,int i)
{//判断栈是否为空,是返回1,否则返回0
if(i==1&&s.top1==s.base1+1||i==2&&s.top2==s.base2-1)
return 1;
else return 0;
}int fullstack(Dblstack &s)
{//判断栈是否已经满,若栈满则返回1否则返回0
if(s.top1==s.top2) return 1;
else return 0;
}int push(Dblstack &s,int i,int x)
{//插入元素x作为新的栈顶元素
if(fullstack(s)){ cout<<"栈满/n"; return 0;}
else{
if(i==1) {cout<<"插入操作成功!/n/n"; *s.top1++=x; }
if(i==2) {cout<<"插入操作成功!/n/n"; *s.top2--=x; }
}return 1;
}int pop(Dblstack &s,int i,int &x)
{//若栈不为空则删除i栈中的栈顶元素用x返回,否则返回0
if(emptystack(s,i)) return 0;
else{
if(i==1) {cout<<"出栈成功!出栈元素为:"; x=*--s.top1; }
if(i==2) {cout<<"出栈成功!出栈元素为:"; x=*++s.top2; }
}return 1;
}int gettop(Dblstack &s,int i,int &x)
{//若栈不为空,则用x返回栈顶元素,并返回真,否则返回0
if(emptystack(s,i)) return 0;
else{
if(i==1) { x=*(s.top1-1); cout<<"/n出栈成功!栈顶为:"; }
if(i==2) { x=*(s.top2+1); cout<<"/n出栈成功!栈顶为:"; }
}return 1;
}int clearstack( Dblstack &s)
{//若栈为空返回1,否则将栈置为空后返回1
if(emptystack(s,1)&&emptystack(s,2)) return 1;
else {s.top1=s.base1+1; s.top2=s.base2-1;}
return 1;
}
int stacktraverse(Dblstack s)
{ // 从栈底到栈顶依次输出栈中每个元素
// 一旦visit()失败,则操作失败
while(s.top1-1>s.base1)
{ s.base1++;
cout<<*s.base1<<'/t';
}
while(s.top2+1<s.base2)
{ s.base2--;
cout<<*s.base2<<'/t';
}
cout<<endl;
return 1;
}
void welcome() //界面的欢迎函数
{
cout<<"/t欢迎使用本程序"<<endl;
cout<<"/t本程序为顺序栈的公用问题"<<endl;
cout<<"/t1进入程序/t0退出程序"<<endl;
cout<<"/t请选择你的操作!"<<endl;
}void menue()//菜单界面函数
{ cout<<"/t请你选择所需要的操作/n";
cout<<"/t1-元素入栈/t2-元素出栈/n";
cout<<"/t3-取栈顶元素/t4-测栈空/n";
cout<<"/t5-清空栈/t6-遍历/n";
cout<<"/t/t7-退出/n";
}void main()
{
int choice,e,x,i;
Dblstack s;
Initstack(s);
welcome();
cin>>e;
if(e==1)
{
do{menue();
cin>>choice;
switch(choice)
{
case 1://入栈
cout<<"请输入插入元素的值!";
cin>>x;
cout<<"/n选择插入哪个栈顶!(1||2):";
cin>>i;
cout<<endl;
push(s,i,x);
break;
case 2://出栈
cout<<"请选择出栈元素所在的栈:";
cin>>i;
cout<<endl;
if(emptystack(s,i)){cout<<"此栈空!/n";break;}
else{
pop( s,i,x);
cout<<x<<endl;
cout<<endl;
break;
}
case 3://获取栈顶元素
cout<<"请选择取栈顶元素所在的栈:/n";
cin>>i;
gettop( s, i, x);
cout<<x<<endl;
break;
case 4://测栈空
if(emptystack(s,1)&&emptystack(s,2))
cout<<"栈空"<<endl;
else
cout<<"栈不空"<<endl;
break;
case 5://清空栈
clearstack( s);
break;
case 6:
stacktraverse(s);
break;
case 7:
cout<<"程序结束"<<endl;
break;
default:
cout<<"不合适的操作/n";
break;
}
}while(choice!=7);
}cout<<"感谢使用此程序:"<<endl;
}
全局变量?
stack<T>?
全部变量,不大好用...;;LZ我还是没大理解你的意思............
把类型申明为public 在写个public 函数中实例化这个类型..然后调用这个public 函数就得了..不过其实就是"全部变量";个人感觉不是很好;
用ref out等也可以....