标题:求问大神们,下面这个栈的操作哪里出问题了???求知识,急,初学者,数据 ...
只看楼主
HZHXH
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-6
 问题点数:0 回复次数:5 
求问大神们,下面这个栈的操作哪里出问题了???求知识,急,初学者,数据结构、、、、
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;
}
搜索更多相关主题的帖子: private public 知识 
2014-11-06 22:08
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
得分:0 
你好,代码现在的问题是什么呢?
我觉得教会你调试的方法应该是最好的解决方法。

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

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




[ 本帖最后由 mxs810 于 2014-11-7 11:51 编辑 ]

授人以鱼不如授人以渔
2014-11-07 11:49
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:0 
class SeqStack
{
}; // here

~~~~~~我的明天我知道~~~。
2014-11-07 13:28
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:0 
问题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



~~~~~~我的明天我知道~~~。
2014-11-07 13:45
HZHXH
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-6
得分:0 
回复 2 楼 mxs810
恩恩,好的,非常感谢,Debug模式下检查到了top出问题了,已经修改O(∩_∩)O、、、、
2014-11-08 12:50
HZHXH
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-6
得分:0 
回复 3 楼 xufan
类声明后面的确有个“;”,非常感谢、、、
2014-11-08 12:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-438232-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.154495 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved