我在C ++中实现了一个链表类,我的print函数永远保持打印。我想知道我的插入功能是否将我的链接列表转换为循环链表,这可以解释为什么我的打印功能会一直循环并循环打印列表。
请帮我弄清楚原因!
这是我在LList.h文件中的Node定义:
struct Node {
char info;
Node *next;
};
这是我的LList.cpp文件中的insert and cons函数:
Node *LList::cons(char ch, Node *p) {
Node *q = new Node;
q->info = ch;
q->next = p;
return q;
}
________________________________________________
Node *LList::insert(char ch, Node *p) {
if (p == nullptr || ch <= p->info) {
return cons(ch,p);
}
Node *q = p;
Node *r = q->next;
while (r != nullptr && ch > r->info) {
q=r;
r=r->next;
}
q->next = cons(ch,p);
return p;
}
这是我在LList.cpp文件中的打印功能:
void LList::print (Node *head) const{
Node *p = head;
while (p != nullptr) {
std::cout << p->info << " ";
p = p->next;
}
}
答案 0 :(得分:0)
你的构造函数设置在当前项旁边,所以next永远不会指向nullptr。结果,next永远不会为null。修改你的构造函数,我认为你将接近表现。