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.
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.
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
#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; }
Jika kita menjalankan program di atas, ia akan menghasilkan output berikut.
rreeeeAtas 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!