我试图在链表的给定索引处和结尾处都插入一个节点,但是我不了解语法,甚至在概念上也不了解我在做什么。
对于这两个问题,我都有一个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;
}
}