如何使用STACK查找最大值 [英] How To Find Maximum Value Using STACK
本文介绍了如何使用STACK查找最大值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的代码..
我被困在这里..请帮助..
它有时会给出真正的价值而不是每个场景.. :(
#include < iostream >
使用 命名空间标准;
模板< class T>
class 堆栈
{
private :
int MaxSize;
int stkptr;
T * stackArray;
Stack( const Stack& other); < span class =code-comment> // disallow copy
Stack& operator =( const Stack&其他); // 禁止分配
public :
Stack( int size);
~Stack();
void push( const T&);
T pop();
bool isFull();
bool isEmpty();
T top();
};
模板< class T>
T Stack< T> :: top()
{
if (stkptr!= - 1 )
return stackArray [stkptr];
// stkptr ++;
}
template < class T>
Stack< T> :: Stack( int size)
{
if (size> 0 )
{
MaxSize = size;
stackArray = new T [MaxSize];
stkptr = 0 ;
}
else
cout<< 大小应为+ _VE。<< ENDL;
}
模板< class T>
Stack< T> :: ~Stack()
{
delete [] stackArray;
}
模板< class T>
void Stack< T> :: push( const T& elem)
{
if (!isFull())
{
stackArray [stkptr] = elem;
stkptr ++;
}
其他
cout<< 堆栈已满。<< ENDL;
}
模板< class T>
T Stack< T> :: pop()
{
if (!isEmpty())
{
stkptr--;
return stackArray [stkptr];
}
else
cout<< 堆栈为空。<< ENDL;
}
模板< class T>
bool Stack< T> :: isEmpty()
{
return stkptr == 0 ;
}
模板< class T>
bool Stack< T> :: isFull()
{
return stkptr == MaxSize;
}
int main()
{
const int n = 5 ;
Stack< int> STK(N);
stk.push( 1 );
stk.push( 31 );
stk.push( 14 );
stk.push( 11 );
stk.push( 9 );
cout<< endl<< 搜索最大!!!<< ENDL;
int Max = stk.pop();
cout<<最大;
while (!stk.isEmpty())
{
if (stk.pop()> Max)
{
Max = stk.pop(); // 此声明看起来很奇怪..
}
}
cout<<最大<< \ n \ n;
return 0 ;
}
任何建议都会受到赞赏..
我刚刚找到了最老练的老师.. :(
解决方案
您可以在此处跳过一个值并将下一个值分配给Max
:
<前一个=c ++> 如果(stk.pop()> Max)
{
Max = stk.pop (); // 此语句看起来很奇怪..
}
而是将弹出值赋给变量并检查最大值:
int cur = stk.pop();
if (cur> Max)
{
Max = cur;
}
Here Is My Code ..
I'm trapped in here .. Please Help .. .
It Some Times Gives The True Value But Not For Every Scenario .. :(
#include <iostream>
using namespace std;
template <class T>
class Stack
{
private:
int MaxSize;
int stkptr;
T *stackArray;
Stack(const Stack &other); // disallow copy
Stack& operator =(const Stack& other); // disallow assignment
public:
Stack(int size);
~Stack();
void push (const T &);
T pop( );
bool isFull();
bool isEmpty();
T top();
};
template<class T>
T Stack<T>::top()
{
if(stkptr != -1)
return stackArray[stkptr];
// stkptr++;
}
template <class T>
Stack<T>::Stack(int size)
{
if(size > 0)
{
MaxSize = size;
stackArray = new T[MaxSize];
stkptr = 0;
}
else
cout<<"Size Should Be +_VE. " << endl;
}
template <class T>
Stack<T>::~Stack()
{
delete []stackArray;
}
template <class T>
void Stack<T>::push(const T &elem)
{
if (!isFull())
{
stackArray[stkptr] = elem;
stkptr++;
}
else
cout <<"Stack Is Full. " << endl;
}
template <class T>
T Stack<T>::pop()
{
if (!isEmpty())
{
stkptr--;
return stackArray[stkptr];
}
else
cout<<"Stack Is Empty. "<< endl;
}
template <class T>
bool Stack<T>::isEmpty()
{
return stkptr == 0;
}
template <class T>
bool Stack<T>::isFull()
{
return stkptr == MaxSize;
}
int main()
{
const int n = 5;
Stack<int> stk(n);
stk.push(1);
stk.push(31);
stk.push(14);
stk.push(11);
stk.push(9);
cout << endl << "Search Max .!!! " << endl;
int Max = stk.pop();
cout << Max;
while(!stk.isEmpty())
{
if(stk.pop() > Max)
{
Max = stk.pop(); // This statement looks Wierd..
}
}
cout << Max << "\n\n";
return 0;
}
Any Suggestions Would Be Appreciated ..
I just Got The DUMBEST Teacher Ever .. . :(
解决方案
You may skip one value here and assign the next toMax
:
if(stk.pop() > Max) { Max = stk.pop(); // This statement looks Wierd.. }
Instead assign the popped value to a variable and check that for maximum:
int cur = stk.pop(); if (cur > Max) { Max = cur; }
这篇关于如何使用STACK查找最大值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文