Test2
This commit is contained in:
parent
8705b7b629
commit
5572368006
141
listmisc.c
Normal file
141
listmisc.c
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#define SIZE_NAME 100
|
||||||
|
|
||||||
|
typedef struct knotenNamensliste {
|
||||||
|
char name[SIZE_NAME];
|
||||||
|
struct knotenNamensliste* next;
|
||||||
|
struct knotenNamensliste* prev;
|
||||||
|
} knotenNamensliste_t;
|
||||||
|
|
||||||
|
knotenNamensliste_t* neuenKnotenErstellen(char *aktuellerName) {
|
||||||
|
knotenNamensliste_t *neuerKnoten = (knotenNamensliste_t*)malloc(sizeof(knotenNamensliste_t));
|
||||||
|
if (neuerKnoten == NULL) {
|
||||||
|
printf("Speicher konnte nicht zugewiesen werden!\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
strncpy(neuerKnoten->name, aktuellerName, SIZE_NAME - 1);
|
||||||
|
neuerKnoten->prev = NULL;
|
||||||
|
neuerKnoten->next = NULL;
|
||||||
|
|
||||||
|
return neuerKnoten;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int namenEinlesen(char *aktuellerName) {
|
||||||
|
printf("Name (Leere Eingabe zum Beenden):\t");
|
||||||
|
if (fgets(aktuellerName, SIZE_NAME, stdin) != NULL) {
|
||||||
|
int laenge = strlen(aktuellerName);
|
||||||
|
if (aktuellerName[laenge-1] == '\n') {
|
||||||
|
aktuellerName[laenge-1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen(aktuellerName) == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wahlListe() {
|
||||||
|
int wahl;
|
||||||
|
printf("Welche Liste (1 oder 2):\t");
|
||||||
|
scanf("%d", &wahl);
|
||||||
|
while (getchar() != '\n');
|
||||||
|
return wahl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void listeSortieren(knotenNamensliste_t **listeHead, char *aktuellerName) {
|
||||||
|
|
||||||
|
knotenNamensliste_t *neuerKnoten = neuenKnotenErstellen(aktuellerName);
|
||||||
|
|
||||||
|
knotenNamensliste_t *temp = *listeHead;
|
||||||
|
|
||||||
|
//Überprüfung ob Name bereits vorhanden
|
||||||
|
while (temp != NULL) {
|
||||||
|
if (strcmp(temp->name, aktuellerName) == 0) {
|
||||||
|
free(neuerKnoten);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
temp = temp->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (*listeHead == NULL) {
|
||||||
|
*listeHead = neuerKnoten;
|
||||||
|
} else {
|
||||||
|
temp = *listeHead;
|
||||||
|
|
||||||
|
//Alphabetische Sortierung
|
||||||
|
while (temp->next != NULL && strcmp(temp->name, aktuellerName) < 0) {
|
||||||
|
temp = temp->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (strcmp(temp->name, aktuellerName) > 0) {
|
||||||
|
|
||||||
|
neuerKnoten->next = temp;
|
||||||
|
neuerKnoten->prev = temp->prev;
|
||||||
|
if (temp->prev != NULL) {
|
||||||
|
temp->prev->next = neuerKnoten;
|
||||||
|
} else {
|
||||||
|
*listeHead = neuerKnoten;
|
||||||
|
}
|
||||||
|
temp->prev = neuerKnoten;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
temp->next = neuerKnoten;
|
||||||
|
neuerKnoten->prev = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void ausgabeListe(knotenNamensliste_t *listeHead) {
|
||||||
|
knotenNamensliste_t *temp = listeHead;
|
||||||
|
while (temp != NULL) {
|
||||||
|
printf("Name: %s\n", temp->name);
|
||||||
|
temp = temp->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
knotenNamensliste_t *listeGemischtHead = NULL;
|
||||||
|
knotenNamensliste_t *listeEinsHead = NULL;
|
||||||
|
knotenNamensliste_t *listeZweiHead = NULL;
|
||||||
|
char aktuellerName[SIZE_NAME];
|
||||||
|
|
||||||
|
while (namenEinlesen(aktuellerName) == 1) {
|
||||||
|
int listeZuweisen = wahlListe();
|
||||||
|
if (listeZuweisen == 1) {
|
||||||
|
listeSortieren(&listeEinsHead, aktuellerName);
|
||||||
|
} else if (listeZuweisen == 2) {
|
||||||
|
listeSortieren(&listeZweiHead, aktuellerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
listeSortieren(&listeGemischtHead, aktuellerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Liste 1:\n");
|
||||||
|
ausgabeListe(listeEinsHead);
|
||||||
|
printf("Liste 2:\n");
|
||||||
|
ausgabeListe(listeZweiHead);
|
||||||
|
printf("Liste gemischt:\n");
|
||||||
|
ausgabeListe(listeGemischtHead);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Created by Lennart Pecher on 23.05.25.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Created by Lennart Pecher on 23.05.25.
|
||||||
|
//
|
Loading…
x
Reference in New Issue
Block a user