链表插入c ++,检查所有情况,但没有任何效果

时间:2018-10-28 21:17:06

标签: c++ algorithm data-structures

因此,我试图创建一个基本的单链列表,不带尾,并使用另一个类“ CarObject”将其添加到我的CarList中,这基本上是我的链表。唯一的问题是在写完代码并对其进行测试之后,似乎没有任何打印/工作,我什至没有得到任何错误。我有点迷茫,不确定自己做错了什么。

更新!:可以说我们忽略了我的代码,但是如何实现对链表的添加功能(无尾巴)

class CarList
{
    class NodeType{

       friend class CarList;
       private:
         CarObject* data;
         NodeType* next;
     };



    public:
        void addCar(CarObject*);


    private:     
        NodeType *head;



};

void CarList::addCar(CarObject *car){


  NodeType* newNode;
  NodeType* currNode;


  newNode = new NodeType;
  newNode->data = car;
  newNode->next = NULL;

  currNode = head;


  while (currNode != NULL) {
    if (car->getYearModel().lessThan(currNode->data->getYearModel()))
      break;

    currNode = currNode->next;
  }

  newNode->next = currNode;
}

void CarList::print(){

    NodeType* currNode = head;
   while (currNode != NULL) {
    currNode->data->printTheCarInfo();
    currNode = currNode->next;
  }



}

1 个答案:

答案 0 :(得分:1)

您忘记更新上一个节点的next指针:

  NodeType* prevNode = NULL;
  while (currNode != NULL) {
    if (car->getYearModel().lessThan(currNode->data->getYearModel()))
      break;

    prevNode = currNode; //remember the previous node
    currNode = currNode->next;
  }

  newNode->next = currNode;
  if (prevNode)
      prevNode->next = newNode;
  else
      head = newNode; //if there's no previous node - newNode is the new head!