lista dwukierunkowa wstawianie

0

Witam
Mam problem z wstawianiem do listy dwukierunkowej od razu z sortowaniem

mam strukturę:

struct auta
{
	char model[40];
	int rok_produkcji;
	float pojemnosc_silnika;
	struct auta *nast;
	struct auta *poprz;
};

dane wczytywane są z pliku

while(!feof(plik))		
	{
		if(glowa == NULL) 
		{
			glowa = wsk = (struct pojazd *)malloc(sizeof(struct auto)); 
		}
		else
		{
			wsk->nast = (struct pojazd *)malloc(sizeof(struct auto));
			wsk=wsk->nast;
			wsk->nast->poprz=wsk;
		
		}
		if(glowa==NULL)
		{
			fscanf(plik, "%s %i %f\n", &(wsk->model), &(wsk->rok_produkcji), &(wsk->pojemnosc_silnika));
			printf("%-10s	%i	%.2f\n", wsk->model, wsk->rok_produkcji, wsk->pojemnosc_silnika);
			wsk->nast = NULL ;
		}
		else
		{

takie coś napisałem ale nie wiem jak porównać elementy nie wstawione jeszcze do listy a potem je wstawić

za wszelką pomoc z góry dziękuje

0
  1. przydzielasz pamięć pod nowy węzeł.
  2. wczytujesz do niego dane.
  3. lecisz po liście dopóki nie znajdziesz węzeł w którym dane są większe niż w tym nowym.
  4. jeżeli znaleziono to wstawiasz przed znalezionym, a jeżeli nie znaleziono to wstawiasz na koniec.
0
void odczyt()
{
	char plik_in[30];
	
	FILE *plik;

	struct pojazd *wstaw;

	

	printf("Podaj nazwe pliku wejsciowego: ");
	scanf("%s",&plik_in);
	printf("\n\n");
	if ((plik = fopen(plik_in, "r")) == NULL)
	{
		printf("\nNie udalo sie otworzyc pliku\n\n");
		exit(1);
	}
	
	while(!feof(plik))		
	{
		wstaw = (struct auto*)malloc(sizeof(struct auto));
		memset(wstaw, 0, sizeof(wstaw));
		if(!fscanf(plik, "%s %i %f", &(wstaw->model), &(wstaw->rok_produkcji), &(wstaw->pojemnosc_silnika)))
		{
			perror("Blad odczytu z pliku\n");
			break;
		}		
		
		if(glowa == NULL) 
		{
			glowa = wsk = wstaw; 
			//cout << wsk->rok_produkcji << wsk->rok_produkcji << "\n";
		}
		
		else
		{	
			struct pojazd *pom = NULL;
			while((wsk->rok_produkcji < wstaw->rok_produkcji )  && (wsk->nast))
				wsk = wsk->nast;

			wstaw->nast = wsk->nast;
			wsk->nast = wstaw;
			
		}
		
		wypisz_elementy_listy();
		wsk = glowa;
	}

	fclose(plik);
}

proszę o pomoc bo ciągle mi nie działa z ta lista

1 użytkowników online, w tym zalogowanych: 0, gości: 1