Joker_Jay 2017-11-30 12:29 采纳率: 100%
浏览 844
已采纳

请问大佬这个问题怎么回事啊?当输入插入的位置时,vs会出现未知错误,是不是编码有问题啊?

#include
#include
using namespace std;
struct Node{
Node *next;
string data;
};
class Astring{
Node*Head;
public:
Astring();
void Create(int);
void Insert(int);
void show();
~Astring();
};
Astring::Astring(){
Head = new Node;
Head->next = NULL;
}
Astring::~Astring(){
Node*p;
while (Head){
p = Head;
Head = Head->next;
delete p;
}
}
void Astring::Create(int m){
Node *t, *p;
p = Head;
string k;
for (int i = 0; i < m; i++){
t = new Node;
cin >> k;
t->data = k;
t->next = p->next;
p->next = t;
}
cout << "输入完毕!" << endl;
}
void Astring::Insert(int m){
Node*p;
Node*o;
string e;
p = Head;
for (int i = 0; i <= m; i++)
{
p = p->next;
}
o = new Node;
cin >> e;
o->data = e;
o->next = p->next;
p->next = o;
}
void Astring::show(){
Node*p;
cout << "链表输出为:" << endl;
while (Head->next != NULL)
{
p = Head;
Head = Head->next;
cout << Head->data << endl;
delete p;
}
cout << "输出完毕!!!" << endl;
}
int main(){
Astring L;
int i;
cin >> i;
L.Create(i);
L.show();
int m;
cin >> m;
L.Insert(m);
L.show();
return 0;
}

  • 写回答

5条回答 默认 最新

  • cgoatherd 2017-12-01 06:44
    关注

    int main(){
    Astring L;
    int i;
    cin >> i;
    L.Create(i);
    L.show(); // 注意: 这个地方你已经把产生的数据释放了。此时Haed是NULL,
    int m;
    cin >> m;
    L.Insert(m); // 此时调用时,Head是NULL,因此会出现异常。 问题不是insert函数,而是在 show,
    // show中显示完成后同时释放了数据,只要把前面的L.show()删除掉就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测