C++ I';我在双链接列表上使用这个打印功能时遇到问题

C++ I';我在双链接列表上使用这个打印功能时遇到问题,c++,doubly-linked-list,C++,Doubly Linked List,因此,对于一个类,我应该使用双链接列表创建一组航班行程。该程序应打印出发行程,然后打印回程行程列表(即达拉斯到休斯顿,然后休斯顿到达拉斯)。其他一切似乎都正常,但在过去的4天左右,我一直无法让我的打印功能正常工作,我不知道出了什么问题 void list::printList(struct NODE* NODE){ struct NODE* last; cout<<"Flight Records for HowardAir Flight CSCI0136:"<<e

因此,对于一个类,我应该使用双链接列表创建一组航班行程。该程序应打印出发行程,然后打印回程行程列表(即达拉斯到休斯顿,然后休斯顿到达拉斯)。其他一切似乎都正常,但在过去的4天左右,我一直无法让我的打印功能正常工作,我不知道出了什么问题

void list::printList(struct NODE* NODE){  
struct NODE* last;  
cout<<"Flight Records for HowardAir Flight CSCI0136:"<<endl;
while (NODE != NULL) {  
    cout<< NODE->data << " to ";//<< NODE->data<<endl;  
    last = NODE;  
    NODE = NODE->next;  
    cout<<NODE->data<<endl;
}  
cout<<""<<endl; 

cout<<"Reverse Flight Records for HowardAir Flight CSCI0136:"<<endl;  
while (last != NULL) {  
    cout<<last->data<< " to ";  
    last = last->prev;  
    cout<<last->data<<endl; 
}  
我听说函数中的“最后一个”变量有些混乱。“last”变量背后的思想是while循环将一直运行,直到程序打印列表上的最后一个节点。所以“last”只是意味着我们要返回到之前打印的最后/最新节点。因此,它只是在常规打印功能中打印刚刚打印的内容,但要向后打印

您会注意到,我注释掉了printList函数中第一个while循环的一部分。当它被放回代码中,并且相应while循环的最后一行被注释掉时,第一组行程显然会像“达拉斯到达拉斯,休斯顿到休斯顿,等等”。也就是说,如果有一种方法可以在同一行中更新变量,这不会是一个问题

我尝试将此函数拆分为两个(一个用于常规打印,另一个用于反向打印),但也没有成功。这是否与我正在更新打印之间的变量有关?还是完全是别的原因


这里有一个指向我的repl.it的链接,如果您想更直接地查看代码:

方法有问题。双链列表必须具有结构中的第一个和最后一个元素指针

struct T_Element
{
   previous *T_Element = nullptr;
   next *T_Element     = nullptr;
};

class T_List
{
public:
/*add and delete functions*/
   void print()
   {
       for(T_Element *element = first; element != nullptr ; element = element->next)
       {
          print(element); /*to define*/
       }
   }
   void reversePrint()
   {
      for(T_Element *element = last; element != nullptr ; element = element->previous)
     {
        print(element); /*to define*/
     }
  }
private:
   first *T_Element = nullptr;
   last *T_Element  = nullptr;
};
第一个注意事项:while(NODE!=NULL)应该是NODE->next=null,因为您正在使用中的下一个节点,而未进行测试。请查看并发布完整的代码,而不是链接。如果不知道某个节点应该包含什么,很难向您提供建议,但是
coutdata
struct T_Element
{
   previous *T_Element = nullptr;
   next *T_Element     = nullptr;
};

class T_List
{
public:
/*add and delete functions*/
   void print()
   {
       for(T_Element *element = first; element != nullptr ; element = element->next)
       {
          print(element); /*to define*/
       }
   }
   void reversePrint()
   {
      for(T_Element *element = last; element != nullptr ; element = element->previous)
     {
        print(element); /*to define*/
     }
  }
private:
   first *T_Element = nullptr;
   last *T_Element  = nullptr;
};