Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //funziona
- #include <stdio.h>
- #include <stdlib.h>
- struct elemento {
- int num;
- struct elemento *next;
- };
- //funzione uno crea lista con una seq di interi in input
- struct elemento *creaListaSeq(){
- int numero;
- struct elemento *primo=NULL;
- struct elemento *puntatore;
- printf("Inserisci il primo numero:\n");
- scanf("%d",&numero);
- //se ha inserito zero termina subito
- if(numero==0)
- return primo;
- if(numero!=0){
- primo=malloc(sizeof(struct elemento));
- primo->num=numero;
- }
- puntatore=primo;
- //ora faccio gli altri elementi
- //lettura del prosssimo numero
- printf("Inserisci il numero:\n");
- scanf("%d",&numero);
- while(numero!=0){
- puntatore->next=malloc(sizeof(struct elemento));
- puntatore=puntatore->next;
- puntatore->num=numero;
- printf("Inserisci il numero:\n");
- scanf("%d",&numero);
- }
- puntatore->next=NULL;
- return primo;
- }
- int lunghezza(struct elemento **lista){
- int contatore=0;
- while(*lista!=NULL){
- contatore++;
- (*lista)=(*lista)->next;
- }
- return contatore;
- }
- void inserisciTesta(struct elemento **lista, int el){
- struct elemento *scorri;
- scorri=*lista;
- struct elemento *nuovo;
- nuovo=malloc(sizeof(struct elemento));
- nuovo->num=el;
- //caso lista vuota
- if(scorri==NULL){
- *lista=nuovo;
- nuovo->next=NULL;
- return;
- }
- //caso la lista non e' vuota
- nuovo->next=*lista;
- *lista=nuovo;
- return;
- }
- void inverti(struct elemento **lista){
- struct elemento *scorri;
- scorri=*lista;
- int elementi=lunghezza(lista);
- int contatore=0;
- while(contatore<elementi){
- inserisciTesta(lista,scorri->num);
- scorri=scorri->next;
- contatore++;
- }
- }
- void print(struct elemento *lista){
- if(lista==NULL)
- return;
- else
- printf("%d ", lista->num);
- print(lista->next);
- }
- int main(){
- struct elemento *lista;
- lista=creaListaSeq();
- print(lista);
- inverti(&lista);
- printf("\n");
- print(lista);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment