Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » einfach verkettete Listen in C -Programmhilfe » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): « vorherige 1 [2] Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen einfach verkettete Listen in C -Programmhilfe
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Lars
Jungspund


Dabei seit: 23.01.2016
Beiträge: 15

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ah ok, das klingt plausibel. Mal schauen, ob ich jetzt weiter komme.

Unser Tutor meinte auch, dass Skizzen dafür sehr hilfreich sind, man wird ja echt teilweise verrückt, wenn man das alles im Kopf durchgeht smile .
24.01.2016 17:53 Lars ist offline Beiträge von Lars suchen Nehmen Sie Lars in Ihre Freundesliste auf
Lars
Jungspund


Dabei seit: 23.01.2016
Beiträge: 15

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

*seufz*
Ich bin ein hoffungsloser Fall traurig .
Das mit dem Einsetzen der einen Listenelemente in die andere Liste klingt ziemlich simpel und ist es wahrscheinlich auch, aber ich krieg's einfach nicht auf die Reihe.

Mir ist das recht unangenehm, aber wenn du gerade nichts zutun hast, kann du mir zeigen, wie genau ich das machen müsste?
Ich denke dann kann ich's wenigstens nachvollziehen...
Ich probier trotzdem nochmal rum, wobei ich nicht glaube, dass das heute nochmal was wird.
24.01.2016 20:34 Lars ist offline Beiträge von Lars suchen Nehmen Sie Lars in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Heute habe ich keine Lust mehr, das ist keine Sache von 5 Minuten. Ich kann mich morgen mal dransetzen.

__________________
Syntax Highlighting fürs Board (Link)
24.01.2016 20:45 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Lars
Jungspund


Dabei seit: 23.01.2016
Beiträge: 15

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ok, danke, dann kann ich das hoffentlich wenigstens nachvollziehen.
Ich schau mal wie weit ich noch komme heute.
24.01.2016 21:00 Lars ist offline Beiträge von Lars suchen Nehmen Sie Lars in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Sortieren klappt, die Ausgabe darfst du selbst verschönen. Sonst verpasse ich noch den Bus.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
#include <stdio.h>
#include <stdlib.h>
#include "readline.h"
#include <time.h>

typedef struct person{
	char nameperson[20];
	char Abteilung;
	int TelNr;
	struct person *next;
}Person;
struct person *anfang = NULL;
struct person *sanfang = NULL;

void neuePerson()
{	
	struct person* zeiger;
	if(anfang==NULL){  
		anfang=(Person*)malloc(sizeof(struct person));
		readLine(anfang->nameperson, 20);
		anfang->TelNr=rand()%100;
		anfang->Abteilung = rand() % 3 + 65; 
		anfang->next=NULL;
		}
	else{
		zeiger=anfang;
		while(zeiger->next != NULL) zeiger=zeiger->next;
		if(zeiger->next == NULL){
			zeiger->next=(Person*)malloc(sizeof(struct person));
			zeiger=zeiger->next;
			readLine(zeiger->nameperson, 20);
			zeiger->TelNr=rand()%100;
			zeiger->Abteilung = rand() % 3 + 65; 
			zeiger->next=NULL;
		}
	}
}

void listeAusgeben(Person* p)
{
	struct person* zeiger = p;
	int mitarbeiter = 0;
	printf("Personalpool Firma:\n");
	while(zeiger != NULL){
		printf("name: %s	abteilung: %c	telNr: %i\n",zeiger->nameperson, zeiger->Abteilung, zeiger->TelNr);
		zeiger=zeiger->next;
		mitarbeiter++;
	}
	printf("Personalpool ferig -- Anzahl Mitarbeiter: %d\n", mitarbeiter);	
}

int sortieren() {
	if (anfang == NULL) return 0; //nichts mehr zu machen
	//beim Probeablauf wird immer die letzte Person entfernt
	Person* letzte = anfang;
	Person* vorletzte = NULL;
	while (letzte->next != NULL) {
		vorletzte = letzte;
		letzte = letzte->next;
	}
	if (vorletzte != NULL) vorletzte->next = NULL; //entferne letzten Eintrag aus unsortierter Liste
	if (letzte == anfang) anfang = NULL;
	
	//Hier kommt das Einfügen in die sortierte Liste
	if (sanfang == NULL) sanfang = letzte; //Fall 1: leere Liste
	else {
		if (letzte->Abteilung < sanfang->Abteilung) { //Fall 2.1
			letzte->next = sanfang;
			sanfang = letzte;
		}
		else { //Fall 2.2
			Person* pos = sanfang;
			int eingefuegt = 0;
			while (pos->next != NULL) {
				if (letzte->Abteilung < pos->next->Abteilung) { //Fall 3.1
					letzte->next = pos->next;
					pos->next = letzte;
					eingefuegt = 1;
					break;
				}
				pos = pos->next;
			}
			if (!eingefuegt) { //Fall 4
				pos->next = letzte;
			}
		}
	}	
	return 1; //weiter sortieren
}

int main()
{
	srand (time(NULL)); //srand gehört dahin, nicht nach oben - dann kann man die Eingabe auch von Datei einlesen und rand() liefert nicht immer das selbe
	printf("Bitte im Folgenden 10 Mitarbeiternamen (jeweils mit Enter) eingeben...\n");
	for(int i=0; i<10; i++)neuePerson();
	listeAusgeben(anfang);
	while (sortieren()) {
		printf("==Pool==\n");
		listeAusgeben(anfang);
		printf("==sortiert==\n");
		listeAusgeben(sanfang);
		printf("\n");	
	}
}


__________________
Syntax Highlighting fürs Board (Link)
25.01.2016 07:23 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Lars
Jungspund


Dabei seit: 23.01.2016
Beiträge: 15

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Oh mann, ich hoffe du hast deinen Bus noch bekommen, dass du dir hier soviel Mühe machst ist ja echt unglaublich.
Ganz großes Danke meinerseits, ich hab's nach langwährendem Studieren nun verstanden. Wenn ich also irgendwann nochmal Listen sortieren muss werde ich's hinbekommen smile .
Ich werde mich bemühen die nächste Aufgabe mal alleine zu lösen, mir wird's unangenehm, wenn ich dich immer fragen muss ^^.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Lars: 25.01.2016 17:53.

25.01.2016 17:51 Lars ist offline Beiträge von Lars suchen Nehmen Sie Lars in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich kam sogar noch rechtzeitig für einen Sitzplatz. Und der Prof kam dann auch noch zuspät, also alles im grünen Bereich großes Grinsen

__________________
Syntax Highlighting fürs Board (Link)
25.01.2016 17:53 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Lars
Jungspund


Dabei seit: 23.01.2016
Beiträge: 15

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Daumen hoch
Ok, dann bin ich ja beruhigt.
25.01.2016 18:02 Lars ist offline Beiträge von Lars suchen Nehmen Sie Lars in Ihre Freundesliste auf
Seiten (2): « vorherige 1 [2] Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » einfach verkettete Listen in C -Programmhilfe