乞求大家看看这个顺序栈吧

lrd408 2008-04-09 06:07:04
//lrd.h
#ifndef LRD_H
#define LRD_H
#define NUM 10
#include <iostream>

class tack {
public:
double* stase;
double* top;
int sizeoftack;

tack(double* stase,double* top,int sizeoftack);
~tack();
}
#endif

//aa.h
#ifndef AA_H
#define AA_H
#include <iostream>
#include "lrd.h"
using std::cout;
using std::endl;



//得到一个栈的头元素
double GetTop(const tack& S) {
double e=0.0;
if(S.stase-S.top==0)
{if(S.stase==0)
cout<<"这是一个空栈!!!"<<endl;}
else e=*(S.top-1);
return e;
}

//压入栈
tack* Push(tack* T,double e) {
*(*T).top++ =e;
return T;
}

//删除栈
double Pop(tack* T) {
double e=0.0;
e= * --(*T).top;
delete (*T).(top+1);//我想删了top的上一个元素

return e;
}
#endif

//lrd.cpp
#include <iostream>
#include "lrd.h"

tack::tack(double* stase,double* top,int sizeoftack) {
stase=new double[NUM*sizeof(double)];
top=stase;
sizeoftack=NUM;
}

tack::~tack () {
delete [] stase;
delete [] top;
}

//main.cpp
#include <iostream>
#include <iomanip>
#include "lrd.h"
#include "aa.h"
using std::cout;
using std::endl;
using std::setprecision;
using std::fixed;

int main() {
tack we;
tack* p=&we;
double ab[10]={12.36,56.23,78.25,89.123,45.789,58.369,1.2,3.6};
if(!we.stase) exit(1);
for(int i=0;i<=10;i++)
Push(p,ab[i]);
cout<<setprecision(8)<<fixed;
do{ i=0;i++;
cout<<Pop(p);
if(i%5==0) cout<<'\n';
else cout<<" ";
}while((*p).top==(*p).stase);

return 0;
}

这到底哪错了!!



...全文
65 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lrd408 2008-04-09
  • 打赏
  • 举报
回复
回3楼,构造函数用来初始化栈的
jieao111 2008-04-09
  • 打赏
  • 举报
回复
你弄到三个文件理,调一下都很麻烦,弄到一个文件里再说吧
leaflm0920 2008-04-09
  • 打赏
  • 举报
回复
tack(double* stase,double* top,int sizeoftack); 这个构造函数到底准备做什么的。。是准备让外面接收这个栈的底部和顶部,还是初始化一个栈的内部成员的??那么内存又由谁来分配。。我看你下面是在pop的时候delete,但在push 的时候又没有分配新空间。。。而是在析构函数里释放内存的。。
还有:在构造函数中是用new double[]分配内存的,却在POP的时候用delete 释放单个double长度的空间,这会报异常吧。。

我总感觉内存管理的很乱。
不想低调 2008-04-09
  • 打赏
  • 举报
回复
拿个编译器调下!!
Supper_Jerry 2008-04-09
  • 打赏
  • 举报
回复
class tack {
public:
double* stase;
double* top;
int sizeoftack;

tack(double* stase,double* top,int sizeoftack);
~tack();
} ;少了一个分号
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-04-09 06:07
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下