无限打印列表功能

时间:2016-09-17 22:09:52

标签: c++ list printing infinite

我在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;
        }
    }

1 个答案:

答案 0 :(得分:0)

你的构造函数设置在当前项旁边,所以next永远不会指向nullptr。结果,next永远不会为null。修改你的构造函数,我认为你将接近表现。