实现排序的双向链表的困难
Difficulties implementing sorted Doubly Linked list
我正在上一门 c++ 课,我们的任务之一是为链表制作一个 ADT 并进行实现。到目前为止,我做得很好。但是现在我应该按顺序添加元素。下面的代码是我的 ADD 函数,我用这段代码完成的是对它们进行排序,因为列表中只有 2 个元素。(我正在从基础开始处理这个问题,然后完善我的代码)。第 11 行的 while-loop 是我尝试迭代(int t 用于调试)
我遇到的问题是,如果我尝试添加大于 5 的数字,我的程序会崩溃而没有错误(cmd 停止工作)。奇怪的是,如果我删除我的while循环,它可以工作。我找不到问题所在。所以我希望能得到一点帮助
主.cpp:
int main() {
SortedDoublyLinkedList<int> *list = new SortedDoublyLinkedList<int>(5, nullptr, nullptr);
int counter = 0;
while (counter < 2) {
int add;
cout << "Enter number: ";
cin >> add;
list->add(add);
counter++;
cout << counter << endl;
}
cout << list->removeLast()->getData()<< endl;
cout << list->removeLast()->getData()<< endl;
cout << list->removeLast()->getData()<< endl;
return 0;
}
SortedDoublyLinkedList.cpp
template<class T>
DoublyLinkedNode<T> *SortedDoublyLinkedList<T>::add(T val) {
if (isEmpty()) {
head = new DoublyLinkedNode<T>(val);
head->setPrevious(nullptr);
head->setNext(nullptr);
} else {
DoublyLinkedNode<T> *newEl = new DoublyLinkedNode<T>(val);
DoublyLinkedNode<T> *temp = head;
int t = 0;
while(temp->getData() != nullptr){
temp = temp->getNext();
t++;
cout << t << endl;
}
if(newEl->getData() > head->getData()){
newEl->setPrevious(head);
newEl->setNext(nullptr);
head->setNext(newEl);
cout <<"IF"<<endl;
}else{
DoublyLinkedNode<T> *temp = head;
head = newEl;
newEl->setPrevious(nullptr);
newEl->setNext(temp);
temp->setPrevious(head);
cout << "El" << endl;
}
}
numberOfElements++;
return head;
}
这个循环(我猜是试图打印出项目)...是错误的。 while 部分在处理元素时循环访问数据
您的损坏代码:
while(temp->getData() != nullptr){
temp = temp->getNext();
t++;
cout << t << endl;
}
功能更强大:
while(temp != nullptr){
cout << t << ":" << temp->getData() << endl;
temp = temp->getNext();
++t;
}
它不能解决您的排序问题,但正如您上面所说,您正在迭代进行,所以我将其留给您解决。
相关文章:
- 如果没有malloc,链表实现将失败
- 如何实现 Front() 方法以返回模板化双向链表C++的第一个元素?
- 如何实现容纳整数和无效指针的双向链表?
- 为什么我的双向链表删除函数会删除多个节点?
- 我对数据结构、双向链表有一些问题
- C++ 双向链表:使用矩阵类成员创建和填充列表
- 在 c++ 中具有向量的双向链表构造函数
- 如何在双向链表上实现复制赋值?
- 在C++中删除双向链表的头节点后出现访问冲突异常
- 不了解链表实现,请帮忙.C++
- 使用链表实现堆栈时出错
- 在双向链表中实现 Popback
- 在C++中反转双向链表
- 双向链表 - 无法删除第一个节点
- 我当前实现的双向链表类是否需要重构迭代器 end() 功能?
- 双向链表 std::unique_ptr 类在节点删除时无法按预期工作
- 如何实现双向链表的迭代器?
- 双向链表插入方法实现 - 正在搜索哪个节点
- 如何在没有参数的情况下实现返回双向链表大小的函数?int size() const.
- 实现排序的双向链表的困难