C: Verkettete Listen
von SchroedingersKatze- SNIPPET_DESC:
- Anfang einer Implementierung verketteter Listen
- SNIPPET_CREATION_TIME:
- 01.07.2014 15:15:33
- SNIPPET_PRUNE_TIME:
- Unendlich
- SNIPPET_TEXT:
-
- #include <stdio.h>
- #include <stdlib.h>
- /* Strukturdefinitionen */
- typedef struct my_node node;
- struct my_node {
- int value;
- node* next;
- };
- typedef struct my_linkedlist LinkedList;
- struct my_linkedlist {
- node* sentinel_head;
- node* sentinel_tail;
- node* head;
- node* tail;
- int size;
- };
- #define NODESIZE (sizeof(node))
- #define LISTSIZE (sizeof(LinkedList))
- /* Funktionsdeklarationen */
- /* neue, leere Liste erzeugen */
- LinkedList* newList(void);
- /* ist die Liste leer? */
- int isEmpty(LinkedList l);
- /* Laenge der Liste ermitteln */
- int length (LinkedList* l);
- /* neuen Knoten mit vorgegebenem Integerwert erzeugen */
- node* newNode (int data);
- /* Knoten am Ende einfuegen */
- LinkedList* appendNode (LinkedList* l, node* n);
- /* Knoten mittendrin einfuegen */
- LinkedList* appendNodeAtPosition (LinkedList* l,
- node* n,
- int posAfterInsertion);
- /* Liste komplett aus dem Speicher entfernen */
- int destroyList(LinkedList* l);
- /* Einen Knoten ausgeben */
- void printNode (node* n);
- /* Liste ausgeben */
- void printList (LinkedList* l);
- /* Letzten Knoten entfernen */
- LinkedList* deleteLastNode (LinkedList* l, node* prevToDelete);
- /* Knoten mittendrin entfernen */
- LinkedList* deleteSpecificNode (LinkedList* l, node* n);
- /* Knoten an bestimmter Position entfernen */
- LinkedList* deleteNodeAtPosition (LinkedList* l, int posBeforeDeletion);
- /* Knoten mit bestimmten Datenwert finden */
- int findData (LinkedList* l, int dataToFind);
- /* Implementierung */
- LinkedList* newList (void) {
- LinkedList* pointer = NULL;
- }
- pointer->sentinel_head = newNode(-1);
- pointer->sentinel_tail = newNode(-1);
- pointer->head = NULL;
- pointer->tail = NULL;
- pointer->size = 0;
- return pointer;
- }
- node* newNode (int data) {
- node* pointer = NULL;
- }
- pointer->value = data;
- pointer->next = NULL;
- return pointer;
- }
- int destroyList(LinkedList* l) {
- return 0;
- }
- /* Hauptprogramm */
- #define MAX (10)
- int main (void) {
- LinkedList* l = newList();
- int i = 0;
- printList (l);
- for (i = 0; i < 10; i++) {
- node* newnode = newNode(3*i + 4);
- appendNode(l, newnode);
- }
- printList(l);
- if (destroyList(l) != 0) {
- }
- return 0;
- }
Quellcode
Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN