C++ 如何在链表中搜索和插入多个节点
我试图搜索节点,其中输出即节点的结果不止一个。因此,我尝试创建一个新的双链接列表,并将这些新节点添加到其中。 然而只得到1个正确的结果,第二个给我的地址或那个节点或是错误的。如图所示 我的代码:C++ 如何在链表中搜索和插入多个节点,c++,visual-studio-2013,linked-list,doubly-linked-list,C++,Visual Studio 2013,Linked List,Doubly Linked List,我试图搜索节点,其中输出即节点的结果不止一个。因此,我尝试创建一个新的双链接列表,并将这些新节点添加到其中。 然而只得到1个正确的结果,第二个给我的地址或那个节点或是错误的。如图所示 我的代码: Order::Node* Order::searchByDate(string date) { Node* cur = head; Node* node = NULL; cout << "\nSearching " << endl; Sleep(
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;
}
Order::Node*Order::searchByDate(字符串日期){
节点*cur=头部;
Node*Node=NULL;
cout-prev=NULL;
newNode->next=cur;
//将新节点复制到节点(具有所有搜索结果的新链表)
node=newNode;
node->prev=newNode;
node=newNode;
睡眠(400);
}
cur=cur->next;
}
返回节点;
}
显示功能:
Node* cur = searchByDate(date);
while (cur != NULL) {
cout << cur->orderid << "\t\t" << cur->date << "\t" << cur->cust.custId << endl;
cur = cur->next;
}
Node*cur=searchByDate(日期);
while(cur!=NULL){
cout orderid新节点的
- 以前的搜索结果应该是现有的搜索结果
- next应该为null
对于现有的搜索结果
- 下一步应该指向新节点
保留另一个指向搜索结果开始的指针。将此开始节点作为方法的结果返回
试试这个
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;
}
新节点的
- 以前的搜索结果应该是现有的搜索结果
- next应该为null
对于现有的搜索结果
- 下一步应该指向新节点
保留另一个指向搜索结果开始的指针。将此开始节点作为方法的结果返回
试试这个
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;
}
为什么睡觉(400)?为什么睡觉(400)?你是如何制作这样好的图表的?是的,现在它可以工作了。我做了一个小小的改变,即Node*newNode=newNode;newNode->prev=NULL;//显式设置为NULL newNode->next=NULL;//显式设置为NULL newNode=cur;
Thankyou@V-R Visio或openoffice的绘图工具可能是候选工具。@V-R(),而且制作图表非常简单快捷,我不想安装Visio等:)你是如何制作这么好的图表的?是的,现在它可以工作了。我做了一个小小的改变,即Node*newNode=newNode;newNode->prev=NULL;//显式设置为NULL newNode->next=NULL;//显式设置为NULL newNode=cur;
谢谢you@V-R Visio或者openoffice的draw实用程序可能是候选工具。@V-R yed(),而且制作diagramsBrilliant既简单又快速,所以我不想安装Visio等:)