单链表分配问题 (nullptr)

Singly Linked List assign issue (nullptr)

本文关键字:问题 nullptr 分配 链表 单链表      更新时间:2023-10-16

这个简单的链表有什么问题?

// linked_lst1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class Node
{
    int data;
    Node* next;
    friend class LinkedList;
};
class LinkedList
{
private:
    Node* s;
public:
    LinkedList() : s(NULL)
    {};
    void add(int x)
    {
        Node* s1 = new Node();
        s1 = s;
        if (!s1)
        {
            s->data = x;
            return;
        }
        while (s1->next)
            s1 = s1->next;
        Node* temp = new Node;
        temp->data = x;

        s1->next = temp;
        temp->next = NULL;
    }
    void showList()
    {
        Node* s1 = new Node;
        s1 = s;
        while (s1)
        {
            cout << s1->data << " ";
            s1 = s1->next;
        }
    }
};

这是主要部分:

int main()
{
    LinkedList list;
    list.add(3);
    list.showList();
    return 0;
}

我认为s->data = x;中存在分配问题,但我不知道如何解决...

请注意,这只是一个教育性的简单代码,我不想使用模板等。

我想,我错了什么。

你创建一个新节点,然后立即覆盖 s1 以指向 s 指向的任何内容——你将失去对新创建的节点的所有访问权限。