Wir müssen die k Knoten der verknüpften Liste in umgekehrter Reihenfolge drucken. Wir müssen einen iterativen Ansatz anwenden, um dieses Problem zu lösen.
Iterative Methoden werden normalerweise mithilfe einer Schleife ausgeführt, bis der Bedingungswert 1 oder wahr ist.
Angenommen, die Liste enthält die Knoten 29, 34, 43, 56 und 88 und der Wert von k ist 2. Die Ausgabe sind die Ersatzknoten bis k, zum Beispiel 56 und 88.
Linked List: 29->34->43->56->88 Input: 2 Output: 56 88
Da wir die letzten k Elemente aus der Liste entfernen müssen, ist es am besten, eine Stapeldatenstruktur zu verwenden, in die die Elemente hineingeschoben werden. Dadurch werden die Liste und das Startelement erstellt Der Stapel ist das letzte Element der Liste und wird dann bis zum k-ten Mal vom Stapel entfernt, wodurch wir den letzten Knoten der verknüpften Liste erhalten.
Der folgende Code zeigt die C-Implementierung des angegebenen Algorithmus.
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; }
Wenn wir das obige Programm ausführen, generiert es die folgende Ausgabe.
reverse of a list is : 109 55 24
Das obige ist der detaillierte Inhalt vonVerwenden Sie die Iterationsmethode in der C-Sprache, um die letzten k Knoten der verknüpften Liste in umgekehrter Reihenfolge auszudrucken.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!