【发布时间】:2013-10-22 20:44:37
【问题描述】:
我想将一些人的名字按字母顺序插入到一个循环双向链表中,但我最多只能添加三个,我不确定为什么会这样。我将要插入的新节点传递给insert 函数,创建指向它的指针,并循环遍历整个列表以找到正确的插入点。但是,当它的名称超过三个时,会删除一个节点并插入另一个节点。有人可以帮我解决这个问题吗?
其他细节:
- 每个
Node都有两个指针,称为next和prev,还有一个称为data的string作为数据成员 -
List类包含插入和显示函数,以及指向虚拟头节点的头指针。当List被初始化时,这个头节点的next和prev指针指向它自己
这是我写的插入函数:
void List::insert(Node newObject)
{
Node *toInsert = &newObject;
Node *cur = head->next;
while((cur != head) && (newObject.data > cur->data))
{
cout << "Is this loop entered?" << endl;
cur = cur->next;
}
toInsert->next = cur;
toInsert->prev = cur->prev;
cur->prev = toInsert;
toInsert->prev->next = toInsert;
}
还有我的main.cpp:
#include "list.h"
#include "node.h"
using namespace std;
int main()
{
Node nikhil = Node("Nikhil");
Node kaustubh = Node("Kaustubh");
Node jon = Node("Jonathan");
Node james = Node("James");
Node elias = Node("Elias");
Node kenny = Node("Kenny");
List suiteMates;
suiteMates.insert(nikhil);
suiteMates.insert(kaustubh);
suiteMates.insert(jon);
suiteMates.insert(james);
suiteMates.insert(elias);
suiteMates.insert(kenny);
suiteMates.display();
}
【问题讨论】: