如何在链表中搜索和插入多个节点

How to search and insert multiple nodes in Linked List

我正在尝试搜索节点,其中节点的输出即结果不止一个。所以我正在尝试制作一个新的双向链表并将这些新节点添加到其中。 但是只得到 1 个正确的结果,第二个给了我我猜地址或那个节点或者是错误的。如图所示

我的代码:

Order::Node* Order::searchByDate(string date) {
    Node* cur = head;
    Node* node = NULL;
    cout << "\nSearching " << endl;
    Sleep(400);

    while (cur != NULL) {
        if (cur->date == date) {
            //create new node
            Node* newNode = new Node;
            newNode->prev = NULL;
            newNode->next = cur;
            //copy newNode to node(new linked list having all search result)
            node = newNode;
            node->prev = newNode;
            node = newNode;
            Sleep(400);
        }

        cur = cur->next;
    }
    return node;
}

显示功能:

Node* cur = searchByDate(date);
while (cur != NULL) {
    cout << cur->orderid << "\t\t" << cur->date << "\t" << cur->cust.custId << endl;
    cur = cur->next;
}

任何一种方案,我可以将所有搜索到的节点添加到一个链表中。

新节点的

  • previous应该是已有的搜索结果。
  • 下一个应该为空。

对于现有的搜索结果

  • next 应该指向新节点。

保留另一个指向搜索结果开头的指针。 Return 此起始节点作为该方法的结果。

试试这个

Order::Node* Order::searchByDate(string date) {
    Node* cur = head;
    Node* node = NULL;
    Node* start = NULL;

    while (cur != NULL) {
        if (cur->date == date) {

            //make a new node
            Node* newNode = new Node(cur->date);
            newNode->prev = NULL; //explicitly set to NULL
            newNode->next = NULL; //explicitly set to NULL

            if (node == NULL) {
                //very first node
                node = newNode;
                start = node;
            }
            else {
                //append new node to existing nodes
                //see diagram below
                node->next = newNode;
                newNode->prev = node;
                node = newNode;
            }
        }

        cur = cur->next;
    }
    return start;
}