C++ 打印链接列表的反面
我正在解决一个问题,我试图打印出一行数字。我有一个包含两个链表的对象。一个列表是正数(包括零),一个链表是负数(从-1开始),我有指向每个列表头的指针。我想做的是按顺序把清单打印出来。如果负链表有五个节点,正链表有六个节点,我想打印出来C++ 打印链接列表的反面,c++,C++,我正在解决一个问题,我试图打印出一行数字。我有一个包含两个链表的对象。一个列表是正数(包括零),一个链表是负数(从-1开始),我有指向每个列表头的指针。我想做的是按顺序把清单打印出来。如果负链表有五个节点,正链表有六个节点,我想打印出来 -5 -4 -2 -1 0 1 2 3 4 5 我已经编写了按顺序打印肯定列表的代码。我很难想出如何以相反的顺序打印负面列表。该函数正在重写下一个!=空){ 用于(计数器;计数器>0;计数器--){ 温度=温度->下一步; } os值; } //下面的所有内
-5 -4 -2 -1 0 1 2 3 4 5
我已经编写了按顺序打印肯定列表的代码。我很难想出如何以相反的顺序打印负面列表。该函数正在重写下一个!=空){
用于(计数器;计数器>0;计数器--){
温度=温度->下一步;
}
os值;
}
//下面的所有内容都会打印非负列表
温度=对象非负头;
//遍历非负列表并打印每个元素(如果不是null)
while(临时->下一步!=NULL){
os值;
温度=温度->下一步;
}
返回操作系统;
}
底部的代码是打印肯定链表,这是非常基本的。最上面的部分是我尝试以相反的顺序打印否定列表,但它不起作用,我甚至不确定这是我应该做的方向。您可以创建一个递归函数,如:
void print_list_reverse(LinkedListNode* current_node) {
if (current_node->next != NULL) print_list_reverse(current_node->next);
os << current_node->value;
}
void print\u list\u reverse(LinkedListNode*当前节点){
如果(当前\u节点->下一步!=NULL)打印\u列表\u反转(当前\u节点->下一步);
os值;
}
这将一直进行到列表的末尾,并在返回的过程中打印每个值
请记住,如果您的列表太大,它可能会崩溃。您将很难向后遍历单个链接列表。这就是你问题的本质。如果你愿意做到完美,你可以使用一个技巧。谢谢,如果您传递一个空的列表指针,它也会中断(没有可能)。顺便说一句,解决这个问题不需要太多。
void print_list_reverse(LinkedListNode* current_node) {
if (current_node->next != NULL) print_list_reverse(current_node->next);
os << current_node->value;
}