[C] Sortowanie za pomocą listy dwukierunkowej

Witam. Moim zadaniem jest napisanie kodu programu który wczytuje słowa z pliku do listy dwukierunkowej, a następnie sortuje je alfabetycznie i wypisuje wynik na ekranie. Problem mój polega na tym, że nie za bardzo wiem jak zabrać się za sortowanie za pomocą listy dwukierunkowej. Pomoże ktoś?

Mój kod:

#include 

#include 


struct element

{

	char slowo[16];

	struct element* nast;

	struct element* poprz;

};


struct element* wczytaj_wartosci(FILE *plik);

void wypisz_wartosci(element* glowa);

void usun_liste(element* glowa);



int main()

{

	FILE *plik;

	element *glowa;

	char nazwa_pliku[30];


	printf("Podaj nazwe pliku z ktorego maja zostac wczytane dane: ");

	scanf("%s", nazwa_pliku);


	printf("Otwieranie pliku\n");

	if((plik=fopen(nazwa_pliku, "r")) == NULL)

		printf("Plik nie zostal otwarty\n");

	printf("Otwarto plik\n");


	glowa = wczytaj_wartosci(plik);

	wypisz_wartosci(glowa);

	usun_liste(glowa);


	return 0;

}


struct element* wczytaj_wartosci(FILE *plik)

{

	struct element *wsk, *glowa=NULL;


	while(feof(plik)==0)

	{

		if(glowa==NULL)

		{

			glowa=(element*)malloc(sizeof(element));

			glowa->nast=NULL;

			fscanf(plik,"%s\n",glowa->slowo);

			wsk=glowa;

		}


		else

		{

			wsk->nast=(element*)malloc(sizeof(element));

			wsk=wsk->nast;

			wsk->nast=NULL;

			fscanf(plik,"%s\n",wsk->slowo);

		}

	}


	return glowa;

}


void wypisz_wartosci(element* glowa)

{

	element* wsk;

	printf("\nWypisuje elementy listy:\n");

	wsk=glowa;


	while(wsk!=NULL)

	{

		printf("\t%s\n",wsk->slowo);

		wsk=wsk->nast;


		if(wsk->nast==NULL)

		{

			printf("\t%s\n",wsk->slowo);

			break;

		}

	}

}


void usun_liste(element* glowa)

{

	element *wsk;

	while(glowa!=NULL)

	{

		wsk=glowa;


		if(wsk->nast==NULL)

			break;


		while(wsk->nast->nast!=NULL)

			wsk=wsk->nast;


		free(wsk->nast);		

		wsk->nast=NULL;

	}


	free(glowa);


	printf("\nUsuwanie listy zakonczone powodzeniem.\n");

}

Dodane 25.03.2012 (N) 21:30

Zapomniałem dodać, że sortowanie ma być umieszczone w funkcji wczytaj_wartosci

Tu chyba najprościej będzie zrobić sortowanie przez wstawianie. Po wczytaniu słowa z pliku nie wstawiasz go na koniec listy, tylko w odpowiednie miejsce w liście, tak żeby była posortowana.