我试图在链表的给定索引处和结尾处都插入一个节点,但是我不理解语法,甚至在概念上也不知道我在做什么。
对于这两个问题,我都有一个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 >” >
答案 0 :(得分:1)
您的两个函数都被错误地实现。他们需要看起来像这样(假设正在使用单链接列表):
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;
}
}