C++中的链表(无法执行输出)[已关闭]

wnavrhmk  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(130)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
4天前关闭。
Improve this question
我在做链表之前做了一个类,没有这样的错误。一切看起来都很好。

#include <iostream>
#include <cstring>
// #include "class.h"


using namespace std;
class node{
    public:
    int data;
    node* next;  
//constructor
    node(int val){
        data = val;
        next = NULL; 
    }
};

// Linked Lists
void InsertAtTail(node* &head, int val){
    node* n = new node(val);

    node* temp = head;

    while (temp->next!= NULL){
        temp= temp->next;
    }
    temp->next = n;
};

void display(node* head){
    node* temp=head;
    while(temp!=NULL){
        cout<< temp->data << ' ';
        temp =temp->next;
    }
    cout<< "NULL" <<endl;
}

int main(){
    cout << "Output";
    node *head = NULL;
    InsertAtTail(head,1);
    InsertAtTail(head,2);
    display(head);
    return 0;
}

现在,它应该工作的很好,根据参考我正在采取。https://www.youtube.com/watch?v=Crqgl10aIGQ有人能指出我哪里犯了错误吗?

af7jpaap

af7jpaap1#

此功能

void InsertAtTail(node* &head, int val){
    node* n = new node(val);

    node* temp = head;

    while (temp->next!= NULL){
        temp= temp->next;
    }
    temp->next = n;
};

假设head不为NULL。但当列表为空时(就像在代码中一样),情况就不是这样了。这是一个更好的版本

void InsertAtTail(node* &head, int val) {
    node* n = new node(val);
    if (head == NULL) {
        // list is empty
        head = n;
    }
    else {
        // list is not empty, find the last node
        node* temp = head;
        while (temp->next != NULL) {
            temp= temp->next;
        }
        // and append the new node there
        temp->next = n;
    }
}

相关问题