Odwrócenie listy jednokierunkowej w C

0

Witam,
Mam problem z odwróceniem listy jednokierunkowej.
Tak wygląda kod, który niestety nie ddziała

int main()
{
    int tab[]={1,2,3,4,5};
    ADRES pierwszy=tworz(tab);
    //odwracanie(pierwszy);
ADRES pier,biez;
pier=pierwszy;
while(pier->nast!=NULL){
    biez=pier->nast;
    pier->nast=biez->nast;
    biez->nast=pier;
    pierwszy=biez;
}
}

sugeruję się tym algorytmem
http://eduinf.waw.pl/inf/alg/001_search/0094.php

proszę o pomoc.

0
#include <stdio.h>
#include <stdlib.h>
struct element{
int dane;
struct element *nast;
};
typedef struct element ELEMENT;
typedef ELEMENT *ADRES;

ADRES tworz(int tab[]){
ADRES pocz=NULL,ost=NULL,pom;
int i;
for(i=0;i<5;i++){
    pom=(ADRES)malloc(sizeof(ELEMENT));
    pom->dane=tab[i];
    if(pocz==NULL){
        pocz=pom;ost=pom;
    }else{
    ost->nast=pom;
    ost=pom;
    }
}
ost->nast=NULL;
return pocz;
}



int main()
{
    int tab[]={1,2,3,4,5};
    ADRES pierwszy=tworz(tab);
    //odwracanie(pierwszy);
ADRES pier,biez;
pier=pierwszy;
while(pier->nast!=NULL){
    biez=pier->nast;
    pier->nast=biez->nast;
    biez->nast=pier;
    pierwszy=biez;
}
}

   while(pierwszy!=NULL){
        printf("%d\t",pierwszy->dane);
        pierwszy=pierwszy->nast;
    }



  /* ADRES ostt=ostatni(pierwszy);
   ADRES ppp=poprzednik(pierwszy,ostt);
   printf("%d",ppp->dane);*/
    return 0;
}

0

Tu jest nieanalogia z linkiem, który podałeś:

biez->nast=pier;

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