28.6.2
This commit is contained in:
parent
1ab4aac4ca
commit
14ad2d456d
13
doppsort.c
13
doppsort.c
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user