简单排序链接列表问题

时间:2017-10-22 03:46:10

标签: c++ c++11

解决我购买的数据结构书中的问题,并且无法编译排序链接列表。排序功能是我遇到麻烦的地方。目标是只输入一个数字,将该数字添加到排序位置的列表中,打印列表。我只是尝试使用非常基本的比较运算符进行排序,但我无法使其运行。 任何建议或指导都将不胜感激。

下面的问题代码:

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;
  }
}

1 个答案:

答案 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;
        }
    }
}