【发布时间】:2020-02-25 06:12:08
【问题描述】:
我被期望在 C++ 中为分配创建一个链表,但我在使用一种特定方法时遇到了很多麻烦。
#include "myLList.h"
#include "Datum.h"
#include <stddef.h>
myLList::myLList()
{
head = curr = tail = NULL;
}
myLList::myLList(float arr[])
{
if(arr[0] = NULL);
exit(0);
int arrayLength = sizeof(arr)/sizeof(arr[0]);
Datum *temp = new Datum(arr[0]);
head = temp;
tail = temp;
for(int i = 1; i < arrayLength; i++)
{
insertAtEnd(arr[i]);
}
}
void myLList::insertAtEnd(float value)
{
Datum *temp = new Datum(value);
if(head == NULL)
{
head = temp;
tail = head;
temp = NULL;
}
else
{
tail->setNext(*temp);
tail = temp;
}
}
Datum myLList::operator[](int index)
{
Datum *temp = head;
for(int i = 0; i++; i < index)
{
temp = temp->getNext();
}
return temp->getData();
}
void myLList::insert(int index, float value)
{
Datum *temp = new Datum(value);
curr = head;
Datum *prev = curr;
for(int i = 1; i < index; i++)
{
prev = curr;
curr = curr->getNext();
}
prev->setNext(*temp);
temp->setNext(*curr);
}
myLList::~myLList()
{
//dtor
}
在使用以下 main.cpp 测试 insertAtEnd 和重载 [] 方法时:
#include <iostream>
#include "Datum.h"
#include "myLList.h"
#include <stddef.h>
using namespace std;
int main()
{
myLList linkedList = myLList();
linkedList.insertAtEnd(1);
linkedList.insertAtEnd(2);
linkedList.insertAtEnd(3);
cout << "third element: " << linkedList[2].getData() << endl;
}
无论我将什么索引推入重载的 [] 运算符,输出只是linkedList 头部的值。任何帮助将不胜感激
【问题讨论】:
-
您是否尝试过调试您的代码?在代码中的哪一行,期望值与实际值不同?
-
请提供包含 setNext 定义的minimal reproducible example。我认为你应该指向 setNext,而不是值。
标签: c++ linked-list operator-overloading singly-linked-list