一个栈的类。。运行时出现问题。。。求解

fengyuewuh 2008-10-05 06:52:53
#ifndef STACK_H
#define STACK_H

class stack{
class link;
link* head;
public:
stack();
~stack();
void push(void* dat);
void* pop();
void* peek();
};

#endif

#include "stack.h"
#include <iostream>
using namespace std;

class stack::link{
public:
void* data;
link* next;
link(void* dat,link* nxt);
~link();
};

stack::link::link(void* dat,link* nxt)
{ data=dat;
next=nxt;
}

stack::link::~link()
{
}

stack::stack()
{ head=0;
}

stack::~stack()
{
}

void stack::push(void* dat)
{head=new link(dat,head);
}

void* stack::pop()
{if(head==0){
cout<<"stack is empty"<<endl;
return 0;}

void* result=head->data;
link* oldhead;
oldhead=head;
head=head->next;
delete oldhead;
return result;
}



void* stack::peek()
{ if(head==0){
cout<<"stack is empty"<<endl;
return 0;}

return head->data;
}


#include "stack.h"
#include <iostream>
using namespace std;
int main()
{stack* s1;
int i=1;
s1->push(&i);
s1->pop();
return 0;
}
运行时出现遇到问题需要关闭的对话框。。。应该是new的问题。。可是怎么改都不对。。请问问题出在哪儿,该如何改正哈????
...全文
77 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzhp 2008-10-06
  • 打赏
  • 举报
回复
stack* s1 //都没有分配空间啊
帅得不敢出门 2008-10-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sys0002 的回复:]
C/C++ code
int main()
{
stack* s1 = new stack;

int i = 1;
s1->push(&i);
s1->pop();

return 0;
}
[/Quote]
up stack* s1;
指针未初始化 就使用了 所以错误了
zhkefa 2008-10-05
  • 打赏
  • 举报
回复
重复的,,
lzr4304061988012 2008-10-05
  • 打赏
  • 举报
回复

int main()
{
stack * s1=new stack;

int i=1;

s1->push(&i);

s1->pop();

return 0;
}

rock_HX 2008-10-05
  • 打赏
  • 举报
回复
最近好多人发帖重复...
sys0002 2008-10-05
  • 打赏
  • 举报
回复

int main()
{
stack* s1 = new stack;

int i = 1;
s1->push(&i);
s1->pop();

return 0;
}
K行天下 2008-10-05
  • 打赏
  • 举报
回复
放到一个文件:(要不你将那个link类放到头文件,link类的实现放到实现文件)

#include <iostream>
using namespace std;
#ifndef STACK_H
#define STACK_H

class stack
{
class link;
link* head;
public:
stack();
~stack();
void push(void* dat);
void* pop();
void* peek();
};

#endif

//#include "stack.h"
//#include <iostream>
//using namespace std;

class stack::link
{
public:
void* data;
link* next;
link(void* dat,link* nxt);
~link();
};

stack::link::link(void* dat,link* nxt)
{ data=dat;
next=nxt;
}

stack::link::~link()
{
}

stack::stack()
{ head=0;
}

stack::~stack()
{
}

void stack::push(void* dat)
{
head=new link(dat,head);
}

void* stack::pop()
{
if(head==0)
{
cout <<"stack is empty" <<endl;
return 0;
}

void* result=head->data;
cout<<*(int*)head->data<<endl;
link* oldhead;
oldhead=head;
head=head->next;
delete oldhead;
return result;
}


void* stack::peek()
{ if(head==0){
cout <<"stack is empty" <<endl;
return 0;}

return head->data;
}


//#include "stack.h"

int main()
{
stack* s1;
int i=1,j=2;
s1->push(&i);
s1->push(&j);
s1->pop();
s1->pop();
s1->pop();
return 0;
}

33,319

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧