Encuentra un nodo de lista enlazada mediante el programa C ++

Aquí, vamos a escribir un programa C ++ para encontrar un nodo en la lista enlazada .

Dada una lista enlazada y un entero N, es necesario encontrar e índice class donde N está presente en la lista enlazada. return -1 si n no está presente en la lista enlazada.

de indexación de los nodos se inicia desde 0.

    Input format:
Line 1: Linked list elements (separated by space and terminated by -1)
Line 2: Integer n
Output format:
Index

Ejemplo:

    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

Descripción:

En esta pregunta, se nos da una lista enlazada y una de datos. Tenemos que encontrar el índice del nodo que contiene los datos .

Ejemplo:

    2->1->5->4->3->NULL
In this list 5 is at 2nd index.

explicación Solución:

En esta pregunta, definimos un puntero temp e igualando con la cabeza de la lista enlazada. Tenemos que mantener un número entero índice mantener la pista del nodo temp. Seguimos atravesando mientras temp! = Return . En cada recorrido, comprobamos si datos de temporales y los datos del usuario. Si son iguales, que class el índice de . Otra cosa que la subasta índice en 1 y temp de TEMP-> siguiente .

Por fin, si no encontramos el elemento, que class -1.

Algoritmo:

  • Paso 1: declarar la función recursiva con parámetros (Nodo * cabeza, class datos)
  • Paso 2: Poner Nodo * temp = cabeza , class index = 0;
  • Paso 3: Repita el paso 4 y 5 mientras
  • Paso 4: si (temp -> Datos == datos) Índice class
  • Paso 5: (temp = NULL!) Otra cosa índice ++ y temp = TEMP-> siguiente;
  • Paso 6: return -1

Función:

//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 ++ código

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

salida

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


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *