我试图在链表的给定索引处和结尾处都插入一个节点,但是我不了解语法,甚至在概念上也不了解我在做什么。

对于这两个问题,我都有一个insertTail函数和一个insertAfter函数,但是我不确定我是否正确实现了它们。

void insertTail(T value) {
        if (head == NULL) {
            insertHead(value);
        }
        else {
            T tailNode = Node(value);
            Node* tempPtr = head;
            while (tempPtr != NULL) {
                tempPtr = tempPtr->next;
            }
            next = tailNode->data;
        }

    };



void insertAfter(T value, T insertionNode) {
        Node* tempPtr = head;
        while (tempPtr->data != insertionNode) {
            tempPtr = tempPtr->next;
        }
        Node* afterNode = new Node(value);
        afterNode->next = tempPtr->next;
        tempPtr->next = afterNode;
    };


我的代码甚至无法使用我当前的代码进行编译。它在读取的else函数中insertTail语句的第一行给出错误


  '初始化':无法从'LinkedList :: Node'转换为'std :: basic_string ,std :: allocator >

最佳答案

您的两个功能都被错误实现。他们需要看起来更像这样(假设正在使用单链接列表):

void insertTail(T value) {
    if (!head) {
        insertHead(value);
    }
    else {
        Node* tailNode = head;
        while (tailNode->next) {
            tailNode = tailNode->next;
        }
        tailNode->next = new Node(value);
    }
}



void insertAfter(T value, Node *insertionNode) {
    if (!insertionNode) {
        insertTail(value);
    }
    else {
        Node* newNode = new Node(value);
        newNode->next = insertionNode->next;
        insertionNode->next = newNode;
    }
}

09-04 03:25