Heim >häufiges Problem >So verstehen Sie verknüpfte Listen in C-Sprache
Die verknüpfte Liste in C-Sprache ist eine Datenstruktur, in der Speicher dynamisch zugewiesen, Knotendatentypen definiert und Knoten hinzugefügt, gelöscht, geändert und überprüft werden können.
Verknüpfte Listen sind eine gemeinsame Basisdatenstruktur, und Strukturzeiger werden hier vollständig genutzt. Die verknüpfte Liste kann Speicher dynamisch zuweisen. Mit anderen Worten: Die verknüpfte Liste ist ein äußerst leistungsfähiges Array. Sie kann mehrere Datentypen in Knoten definieren und Knoten können nach Bedarf hinzugefügt, gelöscht und eingefügt werden. Als nächstes werde ich Ihnen die verknüpfte Liste in C-Sprache im Artikel ausführlich vorstellen. Ich hoffe, dass sie für Sie hilfreich ist.
[Empfohlene Kurse: C-Sprach-Tutorial]
Die verknüpfte Liste verfügt über einen Kopfzeiger, der im Allgemeinen durch Kopf dargestellt wird und eine Adresse speichert. Die Knoten in der verknüpften Liste sind in zwei Kategorien unterteilt: Kopfknoten und allgemeine Knoten. Der Kopfknoten hat kein Datenfeld. Jeder Knoten in der verknüpften Liste ist in zwei Teile unterteilt, ein Datenfeld und ein Zeigerfeld. Eine verknüpfte Liste ist wie eine Kette. Der Kopf zeigt auf das erste Element: Das erste Element zeigt auf das zweite Element. Bis zum letzten Element zeigt das Element nicht mehr auf andere Elemente Liste". Der Adressteil speichert einen „NULL“ (was „leere Adresse“ bedeutet) und die verknüpfte Liste endet hier. Da es sich um eine verknüpfte Liste mit leistungsstarken Funktionen handelt, gibt es natürlich viele Vorgänge, z. B. Erstellen, Ändern, Löschen, Einfügen, Ausgeben einer verknüpften Liste, Sortieren, umgekehrte Reihenfolge, Löschen von Elementen der verknüpften Liste und Ermitteln der Länge der verknüpften Liste Liste usw. Anfänger beim Erlernen verknüpfter Listen beginnen normalerweise mit einer einseitig verknüpften Liste
Leere verknüpfte Liste
--->NULL head
Eine verknüpfte Liste mit n Knoten
---->[p1]---->[p2]...---->[pn]---->[NULL] head p1->next p2->next pn->next
Erstellen Sie eine verknüpfte Liste
Im Allgemeinen verwenden wir typedef struct, um eine verknüpfte Liste zu erstellen, da wir bei der Definition von Strukturvariablen auf diese Weise LinkList direkt verwenden können *a; um Strukturtypvariablen zu definieren.
typedef struct student{ int score; struct student *next; } LinkList;
Eine verknüpfte Liste initialisieren, n ist die Anzahl der Knoten der verknüpften Liste
LinkList *creat(int n){ LinkList *head, *node, *end;//定义头节点,普通节点,尾部节点; head = (LinkList*)malloc(sizeof(LinkList));//分配地址 end = head; //若是空链表则头尾节点一样 for (int i = 0; i < n; i++) { node = (LinkList*)malloc(sizeof(LinkList)); scanf("%d", &node->score); end->next = node; end = node; } end->next = NULL;//结束创建 return head; }
Ändern Sie den Knotenwert der verknüpften Liste
Das Ändern des Knotenwerts der verknüpften Liste ist sehr einfach. Nachfolgend finden Sie eine Funktion, die eine verknüpfte Liste und den zu ändernden Knoten übergibt, um den Wert zu ändern.
void change(LinkList *list,int n) {//n为第n个节点 LinkList *t = list; int i = 0; while (i < n && t != NULL) { t = t->next; i++; } if (t != NULL) { puts("输入要修改的值"); scanf("%d", &t->score); } else { puts("节点不存在"); } }
Knoten der verknüpften Liste löschen
Das Löschen eines Elements der verknüpften Liste bedeutet, dass das Zeigerfeld des vorherigen Knotens an den nächsten Knoten hinter dem zu löschenden Knoten übergeben wird. Das heißt: p->next = q->next und dann den Platz des q-Knotens freigeben, also free(q);
void delet(LinkList *list, int n) { LinkList *t = list, *in; int i = 0; while (i < n && t != NULL) { in = t; t = t->next; i++; } if (t != NULL) { in->next = t->next; free(t); } else { puts("节点不存在"); } }
Knoten der verknüpften Liste einfügen
Wir können sehen, dass beim Einfügen eines Knotens das Zeigerfeld des Knotens vor dem Einfügen zum Verknüpfen verwendet wird Datenfeld des eingefügten Knotens, und fügen Sie dann den Knoten ein. Der Zeigerfeldlink wird in das Datenfeld des späteren Knotens eingefügt. Gemäß der Abbildung erfolgt das Einfügen eines Knotens wie folgt: e->next = head->next; head->next = e; Beim Hinzufügen eines verknüpften Listenknotens werden zwei Strukturzeiger und int-Daten verwendet.
void insert(LinkList *list, int n) { LinkList *t = list, *in; int i = 0; while (i < n && t != NULL) { t = t->next; i++; } if (t != NULL) { in = (LinkList*)malloc(sizeof(LinkList)); puts("输入要插入的值"); scanf("%d", &in->score); in->next = t->next;//填充in节点的指针域,也就是说把in的指针域指向t的下一个节点 t->next = in;//填充t节点的指针域,把t的指针域重新指向in } else { puts("节点不存在"); } }
Verknüpfte Liste ausgeben
Die Ausgabe der verknüpften Liste ist sehr einfach, geben Sie sie einfach aus, während Sie sie durchlaufenwhile (h->next != NULL) { h = h->next; printf("%d ", h->score); }Zusammenfassung: Das Obige ist der gesamte Inhalt Ich hoffe, dass dieser Artikel allen hilft.
Das obige ist der detaillierte Inhalt vonSo verstehen Sie verknüpfte Listen in C-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!