gpt4 book ai didi

c++ - 这个链表的实现有什么问题?

转载 作者:行者123 更新时间:2023-11-28 05:33:31 26 4
gpt4 key购买 nike

这是我用 C++ 创建单向链表的代码。

函数 del_alt() 删除从第二个元素开始的每个备用元素。

编译器没有给出这样的错误,但在运行过程中程序在显示原始列表后突然终止。

我已尽力找出可能的错误,但找不到。

感谢帮助。

干杯。

    #include<iostream>

using namespace std;
class Node
{
public:
Node()
{
next=0;
}
Node *next;
int info;

};

class List
{
private:
Node *head,*tail;
public:
List()
{
head=0;
tail=0;
}
void del_alt();
void add_to_head(int);
void show_list();
};


void List :: del_alt()
{
if(!head||(head==tail))
return;
else
{
Node *current,*after,*ptr;
for(current=head,after=head->next;current!=0;current=current->next,after=current->next)
{
ptr=after;
current->next==after->next;
if(ptr==tail)
tail=current;
delete ptr;
}
}
}

void List :: add_to_head(int el)
{
Node *ptr;
ptr->info=el;
if(!head)
{
ptr->next=0;
head=tail=ptr;
}
else
{
ptr->next=head;
head=ptr;
}
}

void List::show_list()
{ Node *ptr;
cout<<"\n\n";
ptr=head;
while(ptr!=0)
{
cout<<"\t"<<ptr->info;
ptr=ptr->next;
}
}
int main()
{
List l;
int el;
char ch;
cout<<"\n\n\t\t enter elements\n\n\t";
do
{
cin>>el;
l.add_to_head(el);
cout<<"\n\t want to enter more ? (y/n) \n";
cin>>ch;
}while(ch=='y'||ch=='Y');

cout<<"\n\t Original list -> \n";
l.show_list();
l.del_alt();
cout<<"\n\t After deletion -> \n";
n.show_list();
cout<<"\n\n \\===============================================";
}

最佳答案

问题出在add_to_head方法中没有初始化ptr。

Node *ptr;
ptr->info=el

至少ptr应该是一个新分配的cell

Node *ptr = new Node;
ptr->info=el

关于c++ - 这个链表的实现有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38878527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com