对于列表类,我尝试创建一个方法,将节点添加到列表开头的链表(例如void List::prepend(const Item& it)
)以及一个元素插入特定的元素列表中的索引:void List::insert(const Item& it, int index)
所以我可以在开始使用这些方法时使用一些帮助。
我已经创建了一个添加到列表末尾的方法:
void List::append(const Item& it) {
Node *nodePtr = new Node(it, NULL);
if(mySize == 0)
{
myFirst = nodePtr;
}
else
{
myLast->myNext = nodePtr;
}
myLast = nodePtr;
mySize++;
}
但是其他两个并不是很好。
如果你想知道,我在这里有一个typedef:
typedef double Item;
答案 0 :(得分:0)
Answer these questions:
1. What happen if mySize = 1 ?
2. Where does nodePtr point next? ( nodePtr->next)
对于你的问题:
void List::prepend(const Item& it) {
Node *nodePtr = new Node(it, NULL);
if(mySize == 0)
{
myFirst = nodePtr;
}
else{
nodePtr->next = myFirst;
myFirst = nodePtr;
}
mySize++;
}
答案 1 :(得分:0)
void List::prepend(const Item& it) {
Node *nodePtr = new Node(it, NULL);
if(mySize == 0)
{
//..
}
else
{
//..
}
++mySize;
}
void List::insert(const Item& it, int index) {
Node *nodePtr = new Node(it, NULL);
if(index == 0)
{
//..
}
Node *currentNode = myFirst;
int currentIndex = 0;
while(currentIndex < index - 1) {
//..
}
// insert before
// ..
++mySize;
}
自己填写// ..区域。
答案 2 :(得分:0)
它似乎是你的函数(List :: append(const Item&amp; it))有点错误,你还没有将最后一个指针更新为NULL。