Pointer Tausch

Bitte Codetags verwenden und Doppelposts vermeiden.

C und B und er zeigt B an? Wie meinen? Wie sieht die main aus? Mit dem erstellten Parameter?
Das mit dem x würde ich überdenken. So wird nämlich nur 1x sortiert...

Gruss
cwriter
 
Also wenn ich das richtig sehe, willst du eine Liste von Personen nach deren Namen sortieren?! (unabhängig von Gross-/Kleinschreibung) Wieso machst du das so kompliziert?

Zudem ist logisch, dass beim Aufruf von der Main B fehlt. Du änderst den Pointer nur in der Funktion und nicht in der main. Hab dir mal kurz was geschrieben. Bei mir tuts ;)

C:
#include <stdio.h>
#include <string.h>
#include "main.h"



void main(void){
	PERSON* head;
	PERSON A, B, C;
	
	head = &C;

	A.name = "Alpha";
	A.next = NULL;
	B.name = "Bravo";
	B.next = &A;
	C.name = "Charlie";
	C.next = &B;


	printList(head);

	sort(&head);

	printList(head);
}

void sort(PERSON** head){
	
	if(strcmpi((*head)->next->name, (*head)->name) < 0){
		PERSON* _tmp = (*head);
		*head = (*head)->next;
		_tmp->next = (*head)->next;
		(*head)->next = _tmp;
	}

	printList((*head));
}

void printList(PERSON* head){
	while(head != NULL){
		printf("%s\n",head->name);
		head = head->next;
	}
	printf("\n");
}
 
Zurück