dickes problem langsam!
-
Hallo,
Ich hab die frage schonmal gestellt.. doch irgendwie kein plan ....
Ich versteh nicht wie man das unten in Worten ffassen solll!if ( current == NULL ) { new->last = NULL; // wie kann man das in worte fassen else { new->last = current; // Zeiger new zeigt auf zeiger last ? } current = new; Zeiger current ist gleich Zeiger new?
Hab mal das ganze Programm rein gestellt damit die übersicht klar ist...
#include <stdio.h> #define MAX 50 struct Person { char name[MAX]; int alter; float gehalt; struct Person *last; } user; struct Person *current = NULL; struct Person *new = NULL; struct Person *new_current = NULL; int eingabe; int user_menue() { while(1) { printf("\n:::Menue:::"); printf("\n:1: Eingabe"); printf("\n:2: Ausgabe"); printf("\n:0:Programm verlassen"); printf("\n\nEingabe");scanf("%i",&eingabe);fflush(stdin); if (eingabe < 0 || eingabe > 2 ) { printf("\nUngueltige eingabe"); printf("\nEingabe kontrolieren"); printf("\n<ENTER>\n"); fflush(stdin); getc(stdin); } else { return eingabe; } } } int input() { int anzahl; int cur_anzahl; printf("Wieviele Elementen ins Stack einlesen?\n"); fflush(stdin); scanf("%i",&anzahl); new = (struct Person *) malloc ( sizeof( struct Person)); if ( new == NULL) { printf("K E I N - F R E I E R S P E I C H E R"); } for( cur_anzahl = 0; cur_anzahl <= anzahl; cur_anzahl++ ) { printf("\nNAME.............:\n"); fflush(stdin); scanf("%s", user.name); printf("\nALTER............:\n"); fflush(stdin); scanf("%i",&user.alter); printf("\nGEHALT...........:\n"); fflush(stdin); scanf("%f",&user.gehalt); } strcpy( new->name); new->alter; new->gehalt; if ( current == NULL ) { new->last = NULL; // wie kann man das in worte fassen } else { new->last = current; } current = new; return 1; } int output() { while(1) { printf("\nNAME...........:%s",user.name); printf("\nALTER..........:%i",user.alter); printf("\nGehalt...........:%f",user.gehalt); free(current); } return 1; } int main() { while(1) { switch( user_menue() ) { case 1: printf("\nE I N G A B E\n"); input(); break; case 2: printf("\nA U S G A B E\n"); output(); break; case 0: printf("\nP R O G R A M M - B E E N D E T!\n"); return 0; } } }
-
Kann man sagen .. zeiger last vom typ struct person verweist auf die adresse des Letzten Elements?
-
hassun schrieb:
if ( current == NULL ) { new->last = NULL; // wie kann man das in worte fassen else { new->last = current; // Zeiger new zeigt auf zeiger last ? } current = new; Zeiger current ist gleich Zeiger new?
der ganze if-zweig ist völlig unnötig.
new->last = current; current = new;
tut das gleiche.
der rest von deinem programm ist allerdings noch viel merkwürdiger.
-
...und das ganze ding nennt sich übrigens "(einfach vorwärts) verkettete liste".
-
validat0r schrieb:
hassun schrieb:
if ( current == NULL ) { new->last = NULL; // wie kann man das in worte fassen else { new->last = current; // Zeiger new zeigt auf zeiger last ? } current = new; Zeiger current ist gleich Zeiger new?
der ganze if-zweig ist völlig unnötig.
new->last = current; current = new;
tut das gleiche.
der rest von deinem programm ist allerdings noch viel merkwürdiger.
new->last = current; current = new;
WAS TUT DENN DAS!? dieser new -> last
Das war die frage..
Erklärs bitte mit adresse usw.
-
hasssun schrieb:
new->last = current; current = new;
WAS TUT DENN DAS!? dieser new -> last
Das war die frage..
Erklärs bitte mit adresse usw.das ist eine zuweisung, und die macht dass in new->last das gleiche drinne steht wie in current.
das hat dir doch schon der lehrer erklärt. mal wieder nicht aufgepasst und im unterricht lieber am handy rumgespielt, hm?
-
verdammt hasso, lerne endlich unsere Beiträge zu lesen und keine 100 Thrads für ein und dasselbe Problem zu erstellen. Siehe http://www.c-plusplus.net/forum/viewtopic-var-t-is-212629-and-highlight-is-.html
-
Die Output Funktion sieht ja interessant aus. Ich frag mich, was die macht.
-
feigling schrieb:
Die Output Funktion sieht ja interessant aus. Ich frag mich, was die macht.
Lauter Nullen ausgeben natürlich!