栈的不明白

饭fan有引力 饭fan有引力 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近做数据结构的时候,不习惯里面的语法,感觉C++学得。。现在下面的问题大家帮忙看下,指出哪里不对了,要注意什么问题。谢谢

//源文件
#include "Stack.h"
#include <iostream>
using namespace std;

int Trans(int n, int b)
{
Stack<int> stack;
int i, result=0;
while(n != 0)
{
i = n % b;
n = n / b;
stack.Push(i);
}
while(!stack.IsEmpty())
{
i = stack.getTop(result);
stack.Pop(result);
result = result * 10 + i;
}
return result;
}

void main()
{
int N, B;
cout << "Input the system before change : ";
cin >> N;
cout << "Input the system after change : ";
cin >> B;
cout << Trans(N, B) << endl;
system("pause");
}



//头文件
#ifndef STACK_H
#define STACK_H

const int maxSize = 50;

template <class T>
class Stack //栈的类定义
{
private:
T *elements; //存放栈中元素的栈数组
int top; //栈顶指针
int maxSize; //栈最大可容纳元素个数
void overflowProcess(); //栈的溢出处理
public:
Stack(int sz=50); //构造函数
~Stack(); //析构函数
void MakeEmpty(); //清空栈的内容
void Push(const T& x); //新元素x进栈
bool Pop(T &x); //栈顶元素出栈,由x返回
bool getTop(T &x) //读取栈顶元素,由x返回
{
if(IsEmpty() == true)
return false;
x = elements[top]; //返回栈顶元素的值
return true;
}
bool IsEmpty(){return (top=-1)? true:false;}
//判断栈空否
bool IsFull()const{return (top=maxSize-1)? true:false;}
//判断栈满否
int getSize()const{top=-1} //计算栈中元素个数
};

template <class T>Stack<T>::Stack(int sz):top(-1), maxSize(sz)
{
//建立一个最大尺寸为sz的空栈,若分配不成功则错误处理。
elements = new T[maxSize]; //创建栈的数组空间
assert(elements != NULL); //断言:动态存储分配成功与否
};

template <class T>void Stack<T>::overflowProcess()
{
//私有函数:扩充栈的存储空间。
T *newArray = new T[maxSize+stackIncreament];
if(newArray = NULL)
{
cerr << "存储分配失败!" << endl;
exit(1);
}
for(int i=0; i<=top; i++)
newArray[i] = elements[i];
maxSize = maxSize + stackIncreament;
delete []elements;
elements = newArray;
};

template <class T>void Stack<T>::Push(const T& x)
{
//公共函数:若栈不满,则将元素x插入到该栈的栈顶,否则溢出处理。
if(IsFull() == true)
overflowProcess(); //栈满则溢出处理
elements[++top] = x; //栈顶指针先加1,再进栈
};

template <class T>bool Stack<T>::Pop(T &x)
{
//公共函数:若栈不空则函数返回该栈栈顶元素的值,然后栈顶指针退1
if(IsEmpty() == true) //判栈空否,若栈空则函数返回
return false;
x = elements[top--]; //栈顶指针退1
return true; //退栈成功
};

#endif
...全文
评论 7
收藏 已收藏
分享
返回顶部