gpt4 book ai didi

c++ - 双链表三元组

转载 作者:行者123 更新时间:2023-12-03 07:14:50 25 4
gpt4 key购买 nike

卡在C++中。嗨,我想在一个双链表中查找三连串的连续和,这是我的程序。但是在IDE(VS代码)上运行它时,出现了Segmentation Core Dumped错误。
我正在尝试使用它将遍历列表并给出此类三元组的总数的指针
程序:->

#include<iostream>
using namespace std;

class node
{
public:
int data;
node* next,*prev;
};

void insert(node** head_ref,int data)
{
node* new_node = new node();

new_node->data = data;
new_node->next = (*head_ref);
new_node->prev = NULL;

if ((*head_ref) != NULL)
(*head_ref)->prev = new_node;

(*head_ref) = new_node;
}

void display(node* head)
{
cout<<"\nTraversal in forward direction \n";
while (head != NULL)
{
cout<<" "<<head->data<<"<=>";
head = head->next;
}
}

void triplet(node* head,int j)
{
node* nx;
node* pr;
int count=0;
while(head->next!=NULL)
{
head=head->next;
nx = head->next;
pr = head->prev;
cout<<"Insside while";
if(nx->data+head->data+pr->data==j)
{
count++;
}
}
cout<<"\n"<<count;
}

int main()
{
node* head = NULL;
insert(&head,7);
insert(&head,6);
insert(&head,5);
insert(&head,4);
insert(&head,3);
insert(&head,2);
insert(&head,1);

display(head);

triplet(head,6);
cout<<"\n";
}

最佳答案

检查此代码:

   head=head->next;
nx = head->next;
pr = head->prev;
您需要先设置 head,然后再访问 head->next。因此,您最终将取消引用空指针。我的意思是,一开始 head->next不为null,但现在可能会为null。
您还应该检查prev,第一次该值可以为null。
实际上, head = head->next应该是每个循环上您应该做的最后一件事,如下所示:
void triplet(node* head,int j)
{
node* nx;
node* pr;
int count=0;
while(head->next!=NULL)
{
nx = head->next;
pr = head->prev;
cout<<"Insside while";
if(pr && nx->data+head->data+pr->data==j)
{
count++;
}
head=head->next;
}
cout<<"\n"<<count;
}
更新:您还应该检查 head != NULL。我之前没有提到它,因为在您的程序头中始终不为NULL(在调用函数之前已初始化)。

关于c++ - 双链表三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65005932/

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