微信小程序 查找兄弟节点
Given a linked list and an integer N, you need to find and return index where N is present in the Linked List. Return -1 if n is not present in the Linked List.
给定一个链表和一个整数N,您需要查找并返回索引,其中链表中存在N。 如果n在链接列表中不存在,则返回-1。
Indexing of nodes starts from 0.
节点的索引从0开始。
Input format:
Line 1: Linked list elements (separated by space and terminated by -1)
Line 2: Integer n
Output format:
Index
Example:
例:
Sample Input 1:
3 4 5 2 6 1 9 -1
5
Sample Output 1:
2
Sample Input 2:
3 4 5 2 6 1 9 -1
6
Sample Output 2:
4
Description:
描述:
In this question, we are given a linked list and a data. We have to find the index of the Node which contains the data.
在这个问题中,我们得到了一个链表和一个数据。 我们必须找到包含数据的Node的索引 。
Example:
例:
2->1->5->4->3->NULL
In this list 5 is at 2nd index.
Solution explanation:
解决方案说明:
In this question, we define a temp pointer and equating it with head of the Linked List. We have to keep an integer index keeping the track of the temp node. We keep on traversing while temp != NULL. On each traversal, we check whether temp's data and the user's data. If they are equal, we return the index. Else we increment index by 1 and temp to temp-> next.
在这个问题中,我们定义了一个临时指针,并将其与“链表”的头部相等。 我们必须保留一个整数索引来跟踪临时节点。 当temp!= NULL时,我们继续遍历。 在每次遍历时,我们都会检查temp的数据和用户的数据。 如果它们相等,则返回index 。 否则,我们将index递增1,并将temp递增到temp-> next 。
At last if we don’t find the element, we return -1.
最后,如果找不到该元素,则返回-1。
Algorithm:
算法:
Step 1: Declare the recursive function with parameters (Node * head, int data)
步骤1:使用参数(Node * head,int数据)声明递归函数
Step 2: Put Node *temp = head, int index = 0;
步骤2:将Node * temp = head , int index = 0;
Step 3: Repeat Step 4 and 5 while (temp!= NULL)
步骤3: 在(temp!= NULL)的同时重复步骤4和5 。
Step 4: if(temp -> data == data) return index
步骤4: if(temp-> data == data)返回索引
Step 5: else index++ and temp = temp->next;
步骤5:else index ++和temp = temp-> next;
Step 6: return -1
步骤6:传回-1
Function:
功能:
//Function for finding the node
int findNodeInLL(Node* head, int data){
//Used to keep track of the Node Index
int index = 0;
Node * temp = head;
//LinkedList traversal for finding the node
while(temp!=NULL){
if(temp->data == data){
//If element found return index
return index;
}
temp = temp->next;
index++;
}
//If element not found
return -1;
}
C++ code
C ++代码
#include <bits/stdc++.h>
using namespace std;
struct Node{// linked list Node
int data;
Node * next;
};
Node *newNode(int k){ //defining new node
Node *temp = (Node*)malloc(sizeof(Node));
temp->data = k;
temp->next = NULL;
return temp;
}
//Used to add new node at the end of the list
Node *addNode(Node* head, int k){
if(head == NULL){
head = newNode(k);
}
else{
Node * temp = head;
Node * node = newNode(k);
while(temp->next!= NULL){
temp = temp->next;
}
temp-> next = node;
}
return head;
}
// Used to create new linked list and return head
Node *createNewLL(){
int cont = 1;
int data;
Node* head = NULL;
while(cont){
cout<<"Enter the data of the Node"<<endl;
cin>>data;
head = addNode(head,data);
cout<<"Do you want to continue?(0/1)"<<endl;
cin>>cont;
}
return head;
}
//Function for finding the node
int findNodeInLL(Node* head, int data){
//Used to keep track of the Node Index
int index = 0;
Node * temp = head;
//LinkedList traversal for finding the node
while(temp!=NULL){
if(temp->data == data){
//If element found return index
return index;
}
temp = temp->next;
index++;
}
//If element not found
return -1;
}
//Driver Main
int main(){
Node * head = createNewLL();
int data;
cout<<"Enter the data of the linked list to be found."<<endl;
cin>>data;
int index = findNodeInLL(head,data);
cout<<"It is present at "<<index<< endl;
return 0;
}
Output
输出量
Enter the data of the Node
5
Do you want to continue?(0/1)
1
Enter the data of the Node
6
Do you want to continue?(0/1)
1
Enter the data of the Node
7
Do you want to continue?(0/1)
1
Enter the data of the Node
8
Do you want to continue?(0/1)
1
Enter the data of the Node
9
Do you want to continue?(0/1)
0
Enter the data of the linked list to be found.
8
It is present at 3
翻译自: https://www.includehelp.com/cpp-programs/find-a-node-in-linked-list.aspx
微信小程序 查找兄弟节点