P***a 发帖数: 774 | 1 1. 用一个C++实现stack
2. 写一个stack template class
thanks |
s*********t 发帖数: 1663 | 2 用数组还是链表?
【在 P***a 的大作中提到】 : 1. 用一个C++实现stack : 2. 写一个stack template class : thanks
|
s*********t 发帖数: 1663 | 3 #ifndef STACK_H
#define STACK_H
#include
template
class AStack
{
Datatype* m_array;
int m_top;
int m_size;
public:
AStack( int p_size )
{
m_array = new Datatype[p_size];
m_top = 0;
m_size = p_size;
}
bool push( Datatype p_data )
{
if( m_size != m_top )
{
m_array[m_top] = p_data;
m_top++;
return true;
}
return false;
}
【在 P***a 的大作中提到】 : 1. 用一个C++实现stack : 2. 写一个stack template class : thanks
|
c*********7 发帖数: 19373 | |
P***a 发帖数: 774 | 5 假设说用数组吧
【在 s*********t 的大作中提到】 : 用数组还是链表?
|
s*********t 发帖数: 1663 | 6 good
【在 c*********7 的大作中提到】 : top()是否应该检查m-top是否为0.
|
P***a 发帖数: 774 | 7 Thanks
你在做construtor的时候, 是必须输入size还是不必须?
STl的stack是没有size的
【在 s*********t 的大作中提到】 : #ifndef STACK_H : #define STACK_H : #include : template : class AStack : { : Datatype* m_array; : int m_top; : int m_size; : public:
|
P***a 发帖数: 774 | 8 还有个问题
既然pop是void类型,那么我可以打印出pop的值吗
std::cout << mystack.pop() << std::endl;
我试了,似乎编译出错.
但是STL的POP也是void的,不知道他怎么实现打印功能的
【在 s*********t 的大作中提到】 : #ifndef STACK_H : #define STACK_H : #include : template : class AStack : { : Datatype* m_array; : int m_top; : int m_size; : public:
|
d**e 发帖数: 6098 | 9 以上面 svn 的例子,pop()不能用于打印,用top()
如果打印pop出来的那一个,应该这两个连着用
print top();
pop();
我记得STL也好像是这样的,所以STL的pop也是void。
【在 P***a 的大作中提到】 : 还有个问题 : 既然pop是void类型,那么我可以打印出pop的值吗 : std::cout << mystack.pop() << std::endl; : 我试了,似乎编译出错. : 但是STL的POP也是void的,不知道他怎么实现打印功能的
|
P***a 发帖数: 774 | 10 对,刚才查了一下STL,他确实不能打印pop
只能打印top
【在 d**e 的大作中提到】 : 以上面 svn 的例子,pop()不能用于打印,用top() : 如果打印pop出来的那一个,应该这两个连着用 : print top(); : pop(); : 我记得STL也好像是这样的,所以STL的pop也是void。
|
l*****a 发帖数: 14598 | 11 pop is an action to pop top
top is the value on top of the stack
【在 P***a 的大作中提到】 : 对,刚才查了一下STL,他确实不能打印pop : 只能打印top
|