Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » einfach verkette Liste in C » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Der letzte Beitrag
stackoverflow einfach verkette Liste in C

Hey,

ich möchte gerade zu Übungszwecke eine einfache verkettete Liste in C schreiben. Kann aber nicht nachvollziehen warum mein Insert nicht geht.

Jemand eine Idee?


php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
#include <stdio.h>
#include <stdlib.h>

typedef struct ls{                            //Definition des Datentyps Listenelement
    int value;
    struct ls next;
} listelement;                                //Datentyp wird "Listenelement" genannt

typedef listelement * list;                            //"list" wird angelegt, mit Pointer auf das erste Element




void insert(int v, list * l) {                //Die Funktion "insert" übernimmt einen Wert "v" und die Liste "list" als Parameter
    listelement * new;                        //Ein neues Listenelement wird angelegt
    new = malloc(sizeof(listelement));         //Speicherreservierung mittels malloc
    new->value v;
    new->next = *l;                            
    *= new;                                //Das neue Listenelement hat den Wert "v" sowie einen Zeiger auf ihn, und auf das folgende Element
}



int delete_head (list * l) {                    //Die Funktion "delete_head"
    if (*== NULL) return -1;
    list old = *l;
    *old->next;
    free(old);
    return 0;
}



void print_list(list l) {                    //Die Funktion "print_list" gibt die Elemente der Parameter-Listen aus
    if (== NULLprintf("Leere Liste!\n");//Testfall, ob die Liste leer ist
    else
        while (!= NULL) {
            printf("%d "l->value);        //Solange die Liste nicht am Ende ist, wird der Wert des aktuellen Elements ausgegeben
            l->next;                    //"l" ist nun das nächste Listenelement
        }
}



int length(list l) {                        //Die Funktion berechnet die Länge der Liste "l"
    
    int count 0;                            //Der Counter wird auf 0 gesetzt
    while(!= NULL) {
        count++;                            //Solange die Liste nicht am Ende ist, wird der counter um 1 erhöht
        l->next;
    }
    return count;                            //Die Länge der Liste wird zurückgegeben
}



void delete_all(list * l) {                    //Die Funktion delete_all löscht die gesamte Liste "l"
    list next;                                //Next wird deklariert
    while (*!= NULL) {
        next = (*l)->next;                    //Next wird auf den * des nächsten Listenelements gesetzt
        free(*l);                            //Der aktuelle * von l (vorheriges Element) wird freigesetzt
        *next;                            // "*l" wird auf das nächste Listenelement gesetzt
    }
}





int positionOf(int v, list l) {
    int i 0;                                 //Der Counter i, der die Position des gesuchten Wertes darstellt
    
    while( != NULL) {                        //Die Liste wird solange durchsucht, bis sie am Ende ("NULL") ist
    
        if (== l->value) {                
            return i;                        //Wenn der gesuchte Wert "v" dem aktuellen Listenelement entspricht, gebe "i" zurück
        }
 
        i++;                            
        l->next;                        //Falls es nicht der gesuchte Wert war, wird der Counter erhöht und das das nächste Listenelement wird übernommen
    } 
    
    if (== NULL) return -1;                //Ist der gesuchte Wert nicht in der Liste, so wird -1 zurückgegeben
}



void filterEven(list * l) {
    list next;
    while (!= NULL) {                //?Korrekte  Anwendung 
        if ((*l)->value == 1) {            //?Klappt das?
      next = (*l)->next;
            free(*l);
        }
    else {
      next = (*l)->next;
    }
  }
}

// function to sort a singly linked list using insertion sort
int main () {
  listelement * list;
  insert(5, );
  print_list(*list);
  return 0;
}