This commit is contained in:
Daniel Zwanzig 2025-05-16 12:18:00 +02:00
parent 1ab4aac4ca
commit 14ad2d456d

View File

@ -9,7 +9,6 @@ typedef struct eintrag {
struct eintrag *next_tel; struct eintrag *next_tel;
} Eintrag; } Eintrag;
// Eintrag in beide Listen einfügen
void einfuegen(Eintrag **kopf_name, Eintrag **kopf_tel, char *name, int tel) { void einfuegen(Eintrag **kopf_name, Eintrag **kopf_tel, char *name, int tel) {
Eintrag *neu = malloc(sizeof(Eintrag)); Eintrag *neu = malloc(sizeof(Eintrag));
@ -18,14 +17,12 @@ void einfuegen(Eintrag **kopf_name, Eintrag **kopf_tel, char *name, int tel) {
neu->next_name = NULL; neu->next_name = NULL;
neu->next_tel = NULL; neu->next_tel = NULL;
// Einfügen nach Namen sortiert
Eintrag **p = kopf_name; Eintrag **p = kopf_name;
while (*p && strcmp((*p)->name, name) < 0) while (*p && strcmp((*p)->name, name) < 0)
p = &(*p)->next_name; p = &(*p)->next_name;
neu->next_name = *p; neu->next_name = *p;
*p = neu; *p = neu;
// Einfügen nach Telefonnummer sortiert
p = kopf_tel; p = kopf_tel;
while (*p && (*p)->telefon < tel) while (*p && (*p)->telefon < tel)
p = &(*p)->next_tel; p = &(*p)->next_tel;
@ -33,7 +30,6 @@ void einfuegen(Eintrag **kopf_name, Eintrag **kopf_tel, char *name, int tel) {
*p = neu; *p = neu;
} }
// Ausgabe nach Namen sortiert
void liste_name_ausgeben(Eintrag *kopf) { void liste_name_ausgeben(Eintrag *kopf) {
printf("\n...Liste nach Namen sortiert...\n"); printf("\n...Liste nach Namen sortiert...\n");
while (kopf) { while (kopf) {
@ -42,7 +38,6 @@ void liste_name_ausgeben(Eintrag *kopf) {
} }
} }
// Ausgabe nach Telefonnummer sortiert
void liste_tel_ausgeben(Eintrag *kopf) { void liste_tel_ausgeben(Eintrag *kopf) {
printf("\n...Liste nach Telefonnummer sortiert...\n"); printf("\n...Liste nach Telefonnummer sortiert...\n");
while (kopf) { while (kopf) {
@ -51,11 +46,10 @@ void liste_tel_ausgeben(Eintrag *kopf) {
} }
} }
// Speicher am Ende freigeben
void speicher_freigeben(Eintrag *kopf) { void speicher_freigeben(Eintrag *kopf) {
Eintrag *temp; Eintrag *temp;
while (kopf) { while (kopf) {
temp = kopf->next_name; // nur eine Liste reicht zum Freigeben temp = kopf->next_name;
free(kopf); free(kopf);
kopf = temp; kopf = temp;
} }
@ -77,7 +71,7 @@ int main() {
printf("E - Ende\n"); printf("E - Ende\n");
printf("Deine Wahl:"); printf("Deine Wahl:");
scanf("%c", &wahl); scanf("%c", &wahl);
getchar(); // '\n' entfernen getchar();
switch (wahl) { switch (wahl) {
case 'N': case 'N':
@ -85,7 +79,7 @@ int main() {
while (1) { while (1) {
printf("Name:"); printf("Name:");
fgets(name, sizeof(name), stdin); fgets(name, sizeof(name), stdin);
name[strcspn(name, "\n")] = 0; // Zeilenumbruch entfernen name[strcspn(name, "\n")] = 0;
if (strlen(name) == 0) if (strlen(name) == 0)
break; break;
@ -114,7 +108,6 @@ int main() {
} }
} while (wahl != 'E' && wahl != 'e'); } while (wahl != 'E' && wahl != 'e');
// Speicher aufräumen
speicher_freigeben(kopf_name); speicher_freigeben(kopf_name);
return 0; return 0;