Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan kaedah lelaran dalam bahasa C untuk mencetak nod k terakhir senarai terpaut dalam susunan terbalik.

Gunakan kaedah lelaran dalam bahasa C untuk mencetak nod k terakhir senarai terpaut dalam susunan terbalik.

WBOY
WBOYke hadapan
2023-09-17 21:21:02851semak imbas

Gunakan kaedah lelaran dalam bahasa C untuk mencetak nod k terakhir senarai terpaut dalam susunan terbalik.

Kita perlu mencetak nod k senarai terpaut dalam susunan terbalik. Kita perlu menggunakan pendekatan berulang untuk menyelesaikan masalah ini.

Kaedah berulang biasanya dilaksanakan menggunakan gelung sehingga nilai keadaan adalah 1 atau benar.

Katakanlah senarai mengandungi nod 29, 34, 43, 56 dan 88 dan nilai k ialah 2, output akan menjadi nod ganti sehingga k, contohnya 56 dan 88.

Gunakan kaedah lelaran dalam bahasa C untuk mencetak nod k terakhir senarai terpaut dalam susunan terbalik.

Contoh

Linked List: 29->34->43->56->88
Input: 2
Output: 56 88

Memandangkan kita perlu mengalih keluar elemen k terakhir daripada senarai, cara terbaik ialah menggunakan struktur data tindanan di mana elemen ditolak ke dalamnya, ini akan mencipta senarai dan elemen permulaan timbunan ialah elemen terakhir senarai dan kemudian ia muncul dari timbunan sehingga masa ke-k, memberikan kita nod terakhir senarai terpaut.

Kod di bawah menunjukkan pelaksanaan C bagi algoritma yang diberikan.

Algoritma

START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *next
   Step 2 -> create struct node* intoList(int data)
      Create newnode using malloc
      Set newnode->data = data
      newnode->next = NULL
      return newnode
   step 3 -> Declare function void rev(struct node* head,int count, int k)
      create struct node* temp1 = head
      Loop While(temp1 != NULL)
         count++
         temp1 = temp1->next
      end
      Declare int array[count], temp2 = count,i
      Set temp1 = head
      Loop While(temp1 != NULL)
         Set array[--temp2] = temp1->data
         Set temp1 = temp1->next
      End
      Loop For i = 0 and i < k and i++
         Print array[i]
      End
   Step 4 -> In Main()
      Create list using struct node* head = intoList(9)
      Set k=3 and count=0
      Call rev(head,count,k)
STOP

Contoh

#include<stdio.h>
#include<stdlib.h>
// Structure of a node
struct node {
   int data;
   struct node *next;
};
//functon for inserting a new node
struct node* intoList(int data) {
   struct node* newnode = (struct node*)malloc(sizeof(struct node));
   newnode->data = data;
   newnode->next = NULL;
   return newnode;
}
// Function to reversely printing the elements of a node
void rev(struct node* head,int count, int k) {
   struct node* temp1 = head;
   while(temp1 != NULL) {
      count++;
      temp1 = temp1->next;
   }
   int array[count], temp2 = count,i;
   temp1 = head;
   while(temp1 != NULL) {
      array[--temp2] = temp1->data;
      temp1 = temp1->next;
   }
   for(i = 0; i < k; i++)
   printf("%d ",array[i]);
}
int main() {
   printf("</p><p>reverse of a list is : ");
   struct node* head = intoList(9); //inserting elements into a list
   head->next = intoList(76);
   head->next->next = intoList(13);
   head->next->next->next = intoList(24);
   head->next->next->next->next = intoList(55);
   head->next->next->next->next->next = intoList(109);
   int k = 3, count = 0;
   rev(head, count, k); //calling function to print reversely
   return 0;
}

Output

Jika kita menjalankan program di atas, ia akan menghasilkan output berikut.

rreeee

Atas ialah kandungan terperinci Gunakan kaedah lelaran dalam bahasa C untuk mencetak nod k terakhir senarai terpaut dalam susunan terbalik.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam