gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:42:37 24 4
gpt4 key购买 nike

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

enter image description here

我的代码:

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 应该指向新节点。

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

试试这个

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;
}

append new node

关于c++ - 如何在链表中搜索和插入多个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39397711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com