如何解决使用函数在LinkedList中接受输入,但在打印时却给出Segmentation Fault错误
这是一个循环的双向链表,但在运行程序时给出的运行时错误为 Segmentation Fault 。函数的使用是接受输入直到用户给出-1为止,而打印功能则进行打印直到cur-> next == head。请告诉我我在做什么错,这样以后我就不会再这样做了。谢谢!
#include<iostream>
using namespace std;
template<class T>
class CDNode{
public:
T data;
CDNode* next;
CDNode* prev;
CDNode(T x){
data = x;
next = nullptr;
prev = nullptr;
}
};
template<typename T>
CDNode<T>* takeInput(){
cout<<"Enter the elements of the list"<<endl;
T data;
cin>>data;
CDNode<T> *head = nullptr;
CDNode<T> *tail = nullptr;
while(data != -1){
CDNode<T> *newNode = new CDNode<T>(data);
if(head == nullptr){
head = newNode;
tail = newNode;
}else{
tail->next = newNode;
newNode->prev = tail;
tail = tail->next;
}
cin>>data;
}
return head;
}
template<typename T>
void print(CDNode<T> *head,CDNode<T> *cur){
if(cur->next == head){
cout<<cur->data<<endl;
return;
}
cout<<cur->data<<" <- ";
return print(head,cur->next);
}
int main(){
CDNode<int> *head = takeInput<int>();
print(head,head);
}
解决方法
在循环列表中,tail-> next应该指向使其循环的头节点。您的代码只是一个双重列表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。