解决我购买的数据结构书中的问题,并且无法编译排序链接列表。排序功能是我遇到麻烦的地方。目标是只输入一个数字,将该数字添加到排序位置的列表中,打印列表。我只是尝试使用非常基本的比较运算符进行排序,但我无法使其运行。 任何建议或指导都将不胜感激。
下面的问题代码:
class Node
{
public:
Node* next;
int data;
};
class LinkedList
{
public:
Node* head;
LinkedList();
~LinkedList();
void add(int data);
void print();
void sorting();
};
void LinkedList::sorting()
{
Node* head = this->head;
Node* node = new Node();
for (Node* current = head; current != nullptr; current = current->next)
{
if (head->data > head->next->data)
{
node = head;
head = head->next;
head->next = node;
}
head=head->next;
}
}
答案 0 :(得分:0)
排序功能是我遇到麻烦的地方。目标是只输入一个数字,将该数字添加到排序位置的列表中,打印列表。
这是否意味着sorting()
负责在列表中的排序位置插入新节点?看起来不像是你没有在参数中发送任何内容。
但是,我假设是这样的。现在回到你的代码。您没有使用current
,而是在head
循环中的任何位置使用for
。这肯定会弄乱你的清单。尝试更新的代码,我希望您的代码可以正常运行。
void LinkedList::sorting(int data)
{
for (Node* current = head; current != nullptr; current = current->next)
{
// for ascending sorted list
if (current->next->data > data)
{
Node *node = new Node();
node->data = data;
node->next = current->next;
current->next = node;
break;
}
}
}