Heim > Artikel > Backend-Entwicklung > Drucken Sie in der Sprache C den Knoten der verknüpften Liste am angegebenen Index
Wir müssen die Daten der Knoten der verknüpften Liste am angegebenen Index drucken. Im Gegensatz zu Arrays haben verknüpfte Listen im Allgemeinen keinen Index, daher müssen wir die gesamte verknüpfte Liste durchlaufen und die Daten ausdrucken, wenn wir einen bestimmten Punkt erreicht haben. Nehmen wir an, die Liste enthält die Knoten 29, 34, 43, 56 und 88 sowie den Wert Wenn die Anzahl der Indizes 1, 2 und 4 beträgt, handelt es sich bei der Ausgabe um die Knoten an diesen Indizes, die 34, 43 und 88 sind gedruckt oder die Knoten, die sich auf einem bestimmten Index befinden.
Der hier verwendete Ansatz beinhaltet die Verwendung eines Zeigers und einer auf 1 initialisierten Zählervariablen, die jedes Mal erhöht wird, wenn der Knoten durchlaufen wird. Der Zähler wird mit dem Schlüsselwert abgeglichen. Wenn der Schlüssel mit dem Zählerwert übereinstimmt, druckt der Zeiger, der auf die Knotenstruktur zeigt, die Daten des Knotens und erhöht ihn zum nächsten Knoten usw., wodurch wir die Knoten mit einem bestimmten Schlüssel erhalten.
Der folgende Code zeigt die c-Implementierung des angegebenen Algorithmus.
AlgorithmusLinked list: 29->34->43->56->88 Input: 1 2 4 Output: 34 43 88
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 displayList(struct node *catchead) create struct node *temp IF catchead = NULL Print list is empty return End Set temp = catchead Loop While (temp != NULL) print temp->data set temp = temp->next End Step 4 -> Declare Function int search(int key,struct node *head) Set int index Create struct node *newnode Set index = 0 and newnode = head Loop While (newnode != NULL & newnode->data != key) Set index++ Set newnode = newnode->next End return (newnode != NULL) ? index : -1 step 5 -> In Main() create node using struct node* head = intoList(9) call displayList(head) set index = search(24,head) IF (index >= 0) Print index Else Print not found in the list EndIF STOP输出如果我们运行上面的程序,它将生成以下输出.
#include <stdio.h> #include <stdlib.h> //structure of a node struct node { int data; struct node *next; }; struct node* intoList(int data) { struct node* newnode = (struct node*)malloc(sizeof(struct node)); newnode->data = data; newnode->next = NULL; return newnode; } //funtion to display list void displayList(struct node *catchead) { struct node *temp; if (catchead == NULL) { printf("List is empty.</p><p>"); return; } printf("elements of list are : "); temp = catchead; while (temp != NULL) { printf("%d ", temp->data); temp = temp->next; } printf("</p><p>"); } //function to search element int search(int key,struct node *head) { int index; struct node *newnode; index = 0; newnode = head; while (newnode != NULL && newnode->data != key) { index++; newnode = newnode->next; } return (newnode != NULL) ? index : -1; } int main() { int index; 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); displayList(head); index = search(24,head); if (index >= 0) printf("%d found at position %d</p><p>", 24, index); else printf("%d not found in the list.</p><p>", 24); index=search(55,head); if (index >= 0) printf("%d found at position %d</p><p>", 55, index); else printf("%d not found in the list.</p><p>", 55); }
Das obige ist der detaillierte Inhalt vonDrucken Sie in der Sprache C den Knoten der verknüpften Liste am angegebenen Index. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!