Maison  >  Article  >  développement back-end  >  Dans le programme C, traduisez le contenu suivant en chinois : Programme pour trouver le nième nœud à partir du bas d'une liste chaînée

Dans le programme C, traduisez le contenu suivant en chinois : Programme pour trouver le nième nœud à partir du bas d'une liste chaînée

WBOY
WBOYavant
2023-09-13 15:13:01934parcourir

Étant donné n nœuds, la tâche consiste à imprimer le nième nœud à la fin de la liste chaînée. Le programme ne doit pas modifier l'ordre des nœuds dans la liste, mais doit uniquement imprimer le nième nœud du dernier nœud de la liste chaînée.

Exemple

Input -: 10 20 30 40 50 60
   N=3
Output -: 40

Dans l'exemple ci-dessus, en commençant par le premier nœud, parcourez jusqu'à compter n nœuds, c'est-à-dire 10,20 30,40, 50,60, donc l'avant-dernier nœud est 40.

Dans le programme C, traduisez le contenu suivant en chinois : Programme pour trouver le nième nœud à partir du bas dune liste chaînée

Au lieu de parcourir toute la liste de manière aussi efficace, l'approche que vous pouvez suivre -

  • Obtenez un pointeur temporaire vers, par exemple, la température du type de nœud
  • Définissez ce pointeur temporaire sur le premier pointeur de tête de nœud pointé
  • Réglez le compteur sur le nombre de nœuds dans la liste
  • Déplacez temp vers temp → next jusqu'à count-n
  • show temp → data

Si nous utilisons cette méthode, le compte sera de 5 et le programme parcourra la boucle jusqu'à 5-3, soit 2, donc en commençant par 10 à la 0ème position jusqu'à 20 résultats en 1ère position et la 30ème position en deuxième position. Ainsi, avec cette approche, il n'est pas nécessaire de parcourir toute la liste jusqu'à la fin, ce qui permettra d'économiser de l'espace et de la mémoire.

Algorithme

Start
Step 1 -> create structure of a node and temp, next and head as pointer to a structure node
   struct node
      int data
      struct node *next, *head, *temp
   End
Step 2 -> declare function to insert a node in a list
   void insert(int val)
      struct node* newnode = (struct node*)malloc(sizeof(struct node))
      newnode->data = val
      IF head= NULL
         set head = newnode
         set head->next = NULL
      End
      Else
         Set temp=head
         Loop While temp->next!=NULL
            Set temp=temp->next
         End
         Set newnode->next=NULL
         Set temp->next=newnode
      End
Step 3 -> Declare a function to display list
   void display()
      IF head=NULL
         Print no node
      End
      Else
         Set temp=head
         Loop While temp!=NULL
            Print temp->data
            Set temp=temp->next
         End
      End
Step 4 -> declare a function to find nth node from last of a linked list
   void last(int n)
      declare int product=1, i
      Set temp=head
      Loop For i=0 and i<count-n and i++
         Set temp=temp->next
      End
      Print temp->data
Step 5 -> in main()
   Create nodes using struct node* head = NULL
   Declare variable n as nth to 3
   Call function insert(10) to insert a node
   Call display() to display the list
   Call last(n) to find nth node from last of a list
Stop

Exemple

Démonstration en direct

#include<stdio.h>
#include<stdlib.h>
//structure of a node
struct node{
   int data;
   struct node *next;
}*head,*temp;
int count=0;
//function for inserting nodes into a list
void insert(int val){
   struct node* newnode = (struct node*)malloc(sizeof(struct node));
   newnode->data = val;
   newnode->next = NULL;
   if(head == NULL){
      head = newnode;
      temp = head;
      count++;
   } else {
      temp->next=newnode;
      temp=temp->next;
      count++;
   }
}
//function for displaying a list
void display(){
   if(head==NULL)
      printf("no node ");
   else {
      temp=head;
      while(temp!=NULL) {
         printf("%d ",temp->data);
         temp=temp->next;
      }
   }
}
//function for finding 3rd node from the last of a linked list
void last(int n){
   int i;
   temp=head;
   for(i=0;i<count-n;i++){
      temp=temp->next;
   }
   printf("</p><p>%drd node from the end of linked list is : %d" ,n,temp->data);
}
int main(){
   //creating list
   struct node* head = NULL;
   int n=3;
   //inserting elements into a list
   insert(1);
   insert(2);
   insert(3);
   insert(4);
   insert(5);
   insert(6);
   //displaying the list
   printf("</p><p>linked list is : ");
   display();
   //calling function for finding nth element in a list from last
   last(n);
   return 0;
}

Sortie

linked list is : 1 2 3 4 5 6
3rd node from the end of linked list is : 4

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer