【请c++高手帮我看下程序】为什么会报错,定会感激不尽…… 【问题补充,附带原题】

#include<iostream>usingnamespacestd;template<classT>//T为虚拟类型structnode{Td;node*next;}... #include <iostream>
using namespace std;
template <class T> //T为虚拟类型
struct node
{
T d;
node *next;
};
//定义带链栈类
template <class T> //模板声明,数据元素虚拟类型为T
class linked_Stack //带链栈类
{
private: //数据成员
node<T> * top; //带链栈的栈顶指针
public: //成员函数
linked_Stack(); //构造函数,建立空栈,即栈初始化
void prt_linked_Stack(); //顺序输出带链栈中的元素
int flag_linked_Stack(); //检测带链栈的状态
void ins_linked_Stack(T); //入栈
T del_linked_Stack(); //退栈
T read_linked_Stack(); //读栈顶元素
};

//带链栈初始化
template <class T>
linked_Stack<T>::linked_Stack()
{
//栈顶指针为空
top=NULL;
return;
}
//顺序输出栈中的元素
template <class T>
void linked_Stack<T>::prt_linked_Stack()
{
///////////////////////////////////////////此处是要求填的。
if(top==NULL)
{
cout<<"空栈!"<<endl;
}
else
{
while(top!=NULL)
{
cout<<top->d<<endl;
top=top->next;
}
}
}
//检测带链栈的状态
template <class T>
int linked_Stack<T>::flag_linked_Stack()
{
//若带链栈为空,则函数返回0,正常函数返回1
if(top==NULL)
return(0);
return(1);
}

//入栈
template <class T>
void linked_Stack<T>::ins_linked_Stack(T x)
{
////////////////////////////////////////////此处要求填。

//申请一个新结点,置新结点数据域值,置新结点指针域值,栈顶指针指向新结点
node<T> * new_top=new node<T>;
if(new_top==NULL)
cout<<"栈满!"<<endl;
else
{
new_top->d=x;
cout<<new_top->d<<"★"<<endl;
top=new_top;
}
}
//退栈
template <class T>
T linked_Stack<T>::del_linked_Stack()
{
//////////////////////////////////////////////////////////此处要求填

//栈顶元素赋给变量,栈顶指针指向下一个结点,释放结点空间,返回退栈的元素
if (top==NULL)
{
cout<<"空栈!"<<endl;
}
else
{
return top->d;
top = top->next;
}
}
//读栈顶元素
template <class T>
T linked_Stack<T>::read_linked_Stack()
{
///////////////////////////////////////////////////此处要求填。

//返回栈顶元素

if(top==NULL)
cout<<"空栈!"<<endl;
else
return top->d;
}
//////////////////////题目:

1. 建立一个空的带链栈,然后依次将元素50、60、70、80、90、100入栈,输出栈中的元素。最后读栈顶元素,并连续3次做退栈运算,再输出栈中的元素。
运行结果如下:
输出栈中的元素:
100
90
80
70
60
50
栈顶元素:100
退栈元素:100
退栈元素:90
退栈元素:80
再次输出栈中的元素:
70
60
50

【注】不是简单的得出如上结果,我只是想知道为什么错了?
屡屡出现这样的错误
展开
 我来答
百度网友e9d8ee04b
2011-04-18 · TA获得超过413个赞
知道小有建树答主
回答量:385
采纳率:0%
帮助的人:465万
展开全部
哪里错了,你把错误的原因描述清楚先。
更多追问追答
追问
跳出一个对话框,附有:
"0x00402a83"指令引用的"0Xcdcdcdd1"内存,该内存不能为"read"
追答
1.linked_Stack()  中没有栈头,你的代码是top = null
2.入栈操作错误,你是用的指针链表来做为栈的前后顺序,但是你始终只保存了top住息,node->next的域,根本就没有设置过,因此在出线的时候没有后继的信息,所以你出栈时的指针操作全部会弹出你刚才的出错提示。
李少杰噢
2011-04-18 · TA获得超过114个赞
知道答主
回答量:146
采纳率:0%
帮助的人:64.9万
展开全部
应该是内存访问冲突,调试看看是不是有访问未初始化的指针?
更多追问追答
追问
coutd<<endl;//这里有问题
追答
嗯,这种错误我也经常犯哈哈。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式