C++进栈,出栈,清空栈问题求解

#include<iostream>usingnamespacestd;#defineMAX1000template<typenameT>classmyStack{pub... #include <iostream>
using namespace std ;
#define MAX 1000
template<typename T>
class myStack{
public:
myStack( )//Constructor
{
top=-1;
size=MAX;
stack=new T[ MAX ];
}
~myStack() {
delete [] stack ;
}
void push( T );
T pop();
bool empty();
void clear();
private:
T *stack;
int top,size;
};

template<typename T>
void myStack<T>::clear()
{
/*
delete []stack ;//
top=-1;
size=0;
stack=NULL;
*/
top=-1; //不清栈体,只把栈指针移到空位
}

template<typename T>
void myStack<T>::push( T e)
{
stack[++top]=e ;
}

template<typename T>
bool myStack<T>::empty()
{
if ( top < 0 )
return true ;
return false ;
}

template<typename T>
T myStack<T>::pop()
{
return stack[top--];
}

int main()
{
myStack <int> s;

for( int i=0;i<10;i++ )
s.push( i+1 );
while( !s.empty() )
cout << s.pop() << " " ;
cout <<endl;

myStack <float> fs;
for( int j=0;j<10;j++ )
fs.push( j+1 );
while( !fs.empty() )
cout << fs.pop() << " " ;
cout <<endl;
return 0;
}
设置了进栈但是结果输出就只有如下:
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
Press any key to continue

进栈函数里直接就输入了,怎么改成一个自己输出数据的进栈,就是结果不是已有的要自己输入数据测试
展开
 我来答
zyc
2014-12-18 · 知道合伙人软件行家
zyc
知道合伙人软件行家
采纳数:328 获赞数:5073
擅长数据通信、路由器组网、C++语言、数据库SQL语言、GP

向TA提问 私信TA
展开全部

主函数这样修改一下,即可显示入栈出栈:

int main() 

myStack <int> s; 

cout <<"PUSH:" ;

for( int i=0;i<10;i++ ){s.push( i+1 );cout<<i+1<<",";} cout <<endl;

cout <<"POP:";

while(!s.empty() )cout<<s.pop()<<" " ;cout <<endl; 

myStack <float> fs; 

cout <<"PUSH:" ;

for( int j=0;j<10;j++ ){fs.push( j+1 );cout <<j+1<<",";} cout <<endl;

cout <<"POP:";

 while(!fs.empty() ) cout << fs.pop()<<" "; 

 cout <<endl; 

 system("PAUSE"); 

 return 0; 

结果如图:

追问
看来我的问题没写明白,我要的事自己输入一个数据,例如我输入一个2你给我输出一2的进栈出栈数据,你这改的还是以前的意思数据在代码中已经有了。
追答

改为录入方式即可:

int main() 

myStack <int> s; 

int bl=0; 

cout <<"PUSH:" ;

for( int i=0;i<10;i++ ){cin>>bl;s.push( bl );}cout <<endl;

cout <<"POP:";

while(!s.empty() )cout<<s.pop()<<" " ;cout <<endl; 

myStack <float> fs; 

cout <<"PUSH:" ;

for( int j=0;j<10;j++ ){cin>>bl;fs.push(bl);} cout <<endl;

cout <<"POP:";

 while(!fs.empty() ) cout << fs.pop()<<" "; 

 cout <<endl; 

 system("PAUSE"); 

 return 0; 


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式