如何合并两个双向链接列表(访问下一个链接)

时间:2019-07-07 06:41:19

标签: c++ linked-list doubly-linked-list

我正在尝试合并两个双向链表。我已经创建了一个函数,该函数可以按正确的顺序插入新节点。参数是由我的教授设置的,因此我无法更改它们。我可以将第一个项目添加到List1,但无法再添加。

在尝试继续遍历List2并将更多项目添加到List1时出现错误。我尝试了递归和do while循环。在尝试使用do-while循环时

struct nodeType{
int info;
nodeType *next;
nodeType *back;
};

class OrderedDoublyLinkedList{
public:
    //Insert x in appropriate place in the list to keep it 
    sorted
    void insertNode(int x);
    void mergeLists(OrderedDoublyLinkedList &List1, 
    OrderedDoublyLinkedList &List2);

private:
    int count;
    nodeType *first;
    nodeType *last;
};

void 
OrderedDoublyLinkedList::mergeLists(OrderedDoublyLinkedList 
&List1, OrderedDoublyLinkedList &List2){

//First Technique
do{
    List1.insertNode(List2.first->info);
    List2.first->next; //Error: Expresion result unused
}
while(List2.first!=NULL)

//Second Technique
while(List2.first!=NULL)
    List1.insertNode(List2.first->info);
    mergeLists(&List1, &List2.first->next);
//If I try to use this it says cannot bind to a temporary of 
type

我需要访问下一个节点的帮助才能将其余信息添加到List1。

1 个答案:

答案 0 :(得分:1)

您只需要一个简单的while循环

Series.to_frame

尽管我仍然担心这是否可以接受。您说您需要移动 nodeType* n = List2.first; while (n != NULL) { List1.insertNode(n->info); n = n->next; } List2,但这不是此代码的作用,此代码复制 List1List2List1不受此代码的影响。