C++ 使用函数在LinkedList中获取输入,但在打印时给出分段错误
这是一个循环双链接列表,但在运行程序时出现运行时错误分段错误。函数的用途是获取输入直到用户给出-1,打印函数打印直到cur->next==head。请告诉我我做错了什么,这样我以后就不会这么做了。谢谢C++ 使用函数在LinkedList中获取输入,但在打印时给出分段错误,c++,function,linked-list,runtime-error,C++,Function,Linked List,Runtime Error,这是一个循环双链接列表,但在运行程序时出现运行时错误分段错误。函数的用途是获取输入直到用户给出-1,打印函数打印直到cur->next==head。请告诉我我做错了什么,这样我以后就不会这么做了。谢谢 #include<iostream> using namespace std; template<class T> class CDNode{ public: T data; CDNode* next; CDNode* prev; CDN
#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);
}
#包括
使用名称空间std;
模板
类CDNode{
公众:
T数据;
CDNode*next;
CDNode*prev;
CDNode(tx){
数据=x;
next=nullptr;
prev=nullptr;
}
};
模板
CDNode*takeInput(){
库特普雷夫=尾巴;
tail=tail->next;
}
cin>>数据;
}
回流头;
}
模板
无效打印(CDNode*头,CDNode*cur){
如果(当前->下一步==头部){
cout在循环列表中tail->next应该指向使其循环的head节点。您的代码只是一个双列表。在调试器中运行程序时,您观察到了什么,一行一行地执行,并观察变量如何变化?我是编程新手,不知道如何调试代码。如果您能教我一些这样做会很有帮助。这是一项基本技能,使用任何像样的IDE都很容易做到。我没有IDE,我使用linux,使用Geany和Visual Studio代码,有时使用代码块,但我无法有效地使用代码块,因为这太令人困惑了。Visual Studio代码和代码块可以配置为使用调试er IIRC(顺便说一句,这些是IDE)。