注册 登录
编程论坛 C++教室

求问大神们,下面这个栈的操作哪里出问题了???求知识,急,初学者,数据结构、、、、

HZHXH 发布于 2014-11-06 22:08, 581 次点击
SeqStack.h
#ifndef SeqStack_H
#define SeqStack_H

const int StackSize=10;
template<class T>

class SeqStack
{
public:
    SeqStack(){top=-1;}
    ~SeqStack(){}
    void push(T x);
    T pop();
    T GetTop();
    int Empty();
private:
    T data[StackSize];
    int top;
}
#endif

SeqStack.cpp
#include"SeqStack.h"
template <class T>
void SeqStack<T>::push(T x)
{
    int top;
    if(top==StackSize-1)throw"上溢";
    data[++top]=x;
}

template <class T>
T SeqStack<T>::pop()
{
    T x;
    if(top==-1)throw"下溢";
    else
        x=data[top--];
    return x;
}

template <class T>
T SeqStack<T>::GetTop()
{
    if(top==-1)throw"下溢";
    else
        return data[top];
}

template <class T>
int SeqStack<T>::Empty()
{
    if(top==-1)return 1;
    else return 0;
}


MainSeqStack.cpp


#include"SeqStack.cpp"
#include<iostream>
using namespace std;

void main()
{
    SeqStack<int>a;
    cout<<"执行压栈操作:"<<endl;
    try
    {
        a.push(1);
        a.push(2);
        a.push(3);
        a.push(4);
    }
    catch(char* wrong)
    {
        cout << wrong;     //如失败提示失败信息
    }
    cout<<"已经插入“1,2,3,4”"<<endl;
    cout<<"执行判断栈是否为空操作:"<<endl;
    cout<<a.Empty()<<endl;
    cout<<"执行出栈操作:"<<endl;
    cout<<a.pop()<<endl;
    cout<<"弹出栈顶元素:"<<endl;
    cout<<a.GetTop()<<endl;
}
5 回复
#2
mxs8102014-11-07 11:49
你好,代码现在的问题是什么呢?
我觉得教会你调试的方法应该是最好的解决方法。

如果你的代码现在能够正常编译通过了,Debug模式下在最可能出问题的地方设置断点,单步跟踪(不会的话先百度一下吧),查看相关变量的变化情况,就能找到问题了。
如果还不能正常编译的话,那就照着课本改。

通过上面的提示,如果你自己找的问题啦,那就恭喜你了,入门了




[ 本帖最后由 mxs810 于 2014-11-7 11:51 编辑 ]
#3
xufan2014-11-07 13:28
class SeqStack
{
}; // here
#4
xufan2014-11-07 13:45
问题2:
SeqStack<int>a
不会进入
SeqStack(){top=-1;}

修改方法:在.h文中只申明函数
SeqStack(); ~SeqStack();
同时在.cpp文件中增加
程序代码:
//add default constructor
template <class T>
SeqStack<T>::SeqStack():top(-1)
{
}
//@end
//add default destructor
template <class T>
SeqStack<T>::~SeqStack()
{
}
//@end


#5
HZHXH2014-11-08 12:50
回复 2 楼 mxs810
恩恩,好的,非常感谢,Debug模式下检查到了top出问题了,已经修改O(∩_∩)O、、、、
#6
HZHXH2014-11-08 12:51
回复 3 楼 xufan
类声明后面的确有个“;”,非常感谢、、、
1