Listenaufgaben (maybe update later ^^)
-
Mein Einfuegen Ende bricht ab.
ist das so richtig, dass NEU->next = DUMMY; dahin zeigt, wo DUMMY hinzeigt?
oder müsste das NEU->next = NULL; heißen?
und dann DUMMY->next = NEU?
hab schon alles ausprobiert...typedef struct item { int nr; int data; char daten[200000]; struct item *next; }; item* START = NULL; // Zeiger auf den Anfang der Liste int cnt = 0;
...
void do_einfuegen_ende(){ item *DUMMY; item *NEU; int i; NEU = (item*)malloc(sizeof(item)); printf("Geben Sie Ihre Daten ein:\n"); scanf("%d",&i); NEU->data = i; int cnt=0; DUMMY = START; while(DUMMY){ DUMMY=DUMMY->next; cnt++; } cnt++; NEU->nr = cnt; NEU->next = DUMMY; DUMMY = NEU; }
-
während "an Position einfuegen", taddelos funktioniert.
Wollte jetzt aber noch die nr erhöhen von jedem Folge element.
Jetzt sagt er in de While Schleife auf einmal: 'nr' undecleared...void do_einfuegen_pos(){ int i,j; printf("Geben Sie Die Stelle an, an der die Liste eingefügt werden soll:\n"); scanf("%d",&i); printf("Geben Sie Die Daten ein:\n"); scanf("%d",&j); item *NEU; item *DUMMY; NEU = (item*)malloc(sizeof(item)); NEU->nr=i; NEU->data=j; DUMMY=START; while(DUMMY && NEU->nr!=DUMMY->nr){ DUMMY=DUMMY->next; } NEU->next=DUMMY->next; DUMMY->next =NEU; while(NEU){ NEU=NEU->next; NEU->nr=nr+1; } }
-
ok do_einfuegen_ende funktioniert jetzt
void do_einfuegen_ende(){ item *DUMMY; item *NEU; int i; NEU = (item*)malloc(sizeof(item)); printf("Geben Sie Ihre Daten ein:\n"); scanf("%d",&i); NEU->data = i; int cnt=0; DUMMY = START; while(DUMMY->next){ DUMMY=DUMMY->next; cnt++; } if(DUMMY->next==NULL){ cnt++; NEU->nr=cnt; NEU->next = NULL; DUMMY->next = NEU; } }
-
soll letztes Listenelement loeschen, was geht jetzt wieder nicht?
void do_loeschen_ende(){ item *DUMMY; item *X; DUMMY = START; if(!START){ printf("keine Elemente in der Liste vorhanden!\n"); system("Pause"); return; } while(DUMMY->next){ if(DUMMY->next->next==NULL){ X=DUMMY->next; DUMMY->next=X->next; free(X); } DUMMY=DUMMY->next; } }
-
So geht das nicht, wenn die Liste aus nur einem Element besteht. Das neue Ende muss auch noch irgendwie gekennzeichnet werden ( Head = NULL oder LastElement->next = NULL ).