| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1211 人关注过本帖
标题:一个栈类的实现的问题,求教!
只看楼主 加入收藏
影x
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-10-15
结帖率:0
收藏
已结贴  问题点数:0 回复次数:5 
一个栈类的实现的问题,求教!
大家好,我有个问题想问一下,我想实现一个栈类,自己写了些代码(如下),现在有一个小问题:1);这个栈的数据类型都是int的,假如现在我在主函数中有两个对象,一个要用数据类型为int的,另一个要用char的,那么应该怎么办呢?  另外我这个代码没问题吧??在此先谢谢大家了!
stack.h
程序代码:
#ifndef _STACK_H
#define _STACK_H
#define STACK_INIT_SIZE    100

typedef struct tagSqStack{
    int *base;                                        // 栈底
    int *top;                                        // 栈顶
    int stacksize;
} SqStack;

class stack 
{
private:
    SqStack S;
public:
int InitStack();                            // 创建栈
void Push(int);                            // 向栈中放入数据[压栈]
void Pop(int &);                            // 从栈中取数据[弹栈]
int  GetTop();                                // 查看栈顶数据
}
#endif


stack.cpp
程序代码:
#include"stack.h"
#include<iostream>
using namespace std;                                            
                        //???为了用new,是不是在这个cpp文件里写这个#include<iostream> using namespace std;
int InitStack()                            // 创建栈
{
    S.base = new int[STACK_INIT_SIZE];
    if (!S.base) return(-1);
    S.top = S.base;
    S.stacksize = STACK_INIT_SIZE;
    return(1);
}

void Push(int e)                        // 向栈中放入数据[压栈]
{
    *S.top = e;
    S.top++;
}

void Pop(int &e)                        // 从栈中取数据[弹栈]
{
    if (S.top == S.base) return;
    S.top--;
    e = *S.top;
}

int GetTop()                                // 查看栈顶数据            
{
    if (S.top == S.base) return('E');
    return(*(S.top-1));
}


[ 本帖最后由 影x 于 2011-10-15 22:36 编辑 ]
搜索更多相关主题的帖子: 怎么办 
2011-10-15 22:34
nomify
Rank: 5Rank: 5
等 级:职业侠客
帖 子:79
专家分:366
注 册:2011-10-13
收藏
得分:5 
代码没看。
用template呀。
2011-10-15 22:37
mengcan555
Rank: 4
等 级:业余侠客
帖 子:104
专家分:253
注 册:2011-9-17
收藏
得分:5 
最好的办法是把栈类设计成模板类
2011-10-15 22:45
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:5 
只要记住栈的规则就行了
2011-10-16 08:43
lqsh
Rank: 2
来 自:山东济南
等 级:论坛游民
帖 子:26
专家分:58
注 册:2011-8-29
收藏
得分:5 
程序代码:
#define STACK_INIT_SIZE    100
template <class T>
class stack
{
private:
         T*base;
         T *top;
         int stacksize;
public:
    stack()
    {
        InitStack();
    }
    ~stack()
    {
        if(base)
        {
            delete[]base;
        }
    }
int InitStack();                            // 创建栈
void Push(T);                            // 向栈中放入数据[压栈]
void Pop(T&);                            // 从栈中取数据[弹栈]
T  GetTop();                                // 查看栈顶数据
};

template <class T>
int stack<T>:: InitStack()                            // 创建栈
{
    base = new T[STACK_INIT_SIZE];
    if (!base) return(-1);
    top = base;
    stacksize = STACK_INIT_SIZE;
    return(1);
}

template <class T>
void stack<T>:: Push(T e)                        // 向栈中放入数据[压栈]
{
    *top = e;
    top++;
}
template <class T>
void stack<T>:: Pop(T&e)                        // 从栈中取数据[弹栈]
{
    if (top == base) return;
    top--;
    e = *top;
}
template <class T>
T stack<T>::GetTop()                                // 查看栈顶数据           
{
    if (top == base) return('E');
    return(*(top-1));
}
int main()
{
    stack<char>ints;
    ints.Push('1');
    ints.Push('2');
    cout<<ints.GetTop();


    return 0;
}
简单的给你改动一下,自己看看吧。
2011-10-16 09:24
文思旋风
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-12
收藏
得分:0 
用模板类实现
2012-06-13 20:00
快速回复:一个栈类的实现的问题,求教!
数据加载中...
 
   



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

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