Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Knoten beim einfügen in eine Liste sortieren (http://www.informatikerboard.de/board/thread.php?threadid=3448)


Geschrieben von dghst am 06.02.2017 um 21:00:

  Knoten beim einfügen in eine Liste sortieren

Meine Frage:
Guten Abend, ich habe ein Programm zur Verwaltung von einem Periodensystem geschrieben, es funktioniert soweit alles, bis auf, dass ich ich die Elemente gerne nach Ordnungszahl sortiert hätte.

Meine idee wäre es über qsort bei addKnoten zu lösen, allerdings habe ich Probleme dabei, kann mir jemand helfen?

lG

Meine Ideen:
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>

typedef char string[30];
typedef struct Knoten {
string name;
string Symbol;
string Ordnungszahl;
struct Knoten *nachf;
} Knoten;

typedef Knoten * Liste;

Knoten * zeigerAufNeuenKnoten( string name, string Symbol, string Ordnungszahl, Knoten *rest )
{
Knoten *neu = malloc( sizeof( Knoten ) );

strcpy( neu->name, name );
strcpy( neu->Symbol, Symbol );
strcpy( neu->Ordnungszahl, Ordnungszahl );

neu->nachf = rest;

return neu;
}


Liste addKnoten( Liste liste, string name, string Symbol, string ordnungszahl )
{
liste = zeigerAufNeuenKnoten( name, Symbol, ordnungszahl, liste );

return liste;
}


void printKnoten( Knoten *knoten )
{
printf("%s, %s, %s\n", knoten->name, knoten->Symbol, knoten->Ordnungszahl);
}


void printListe( Liste liste )
{

while( liste != NULL )
{
printKnoten( liste );
liste = liste->nachf;
}
}

int main( void )
{
Liste liste = NULL;

liste = addKnoten( liste, "Aluminium", "Al", "13" );
liste = addKnoten( liste, "Calium", "Ca", "20" );
liste = addKnoten( liste, "Chlor", "Cl", "17" );
liste = addKnoten( liste, "Flor", "F", "9" );
liste = addKnoten( liste, "Magnesium", "Mg", "12" );


printListe( liste );

printf("\n");

getch();
return 0;
}



Geschrieben von eulerscheZahl am 06.02.2017 um 21:25:

 

Die Ordnungszahl als string? Für so etwas wurden ints erfunden.

Wenn du sortiert einfügst, bleibt die Liste ja auch immer sortiert. Quicksort macht nur Sinn, wenn alles wild durcheinander ist.

Einfügen in eine sortierte Liste hatten wir hier schonmal: einfach verkettete Listen in C -Programmhilfe
Wenn du damit nichts anfangen kannst, gerne nochmal nachfragen.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH