Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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;
- }
- //FUNZIONAAAAAAAA----->
- //verifica se una lista contiene solo elementi pari
- int soloPari(struct elemento *lista){
- struct elemento *puntatore;
- int flag=1;
- if(lista==NULL)
- return 0;
- puntatore=lista;
- while(puntatore!=NULL && flag==1){
- if(puntatore->num%2==1)
- flag=0;
- puntatore=puntatore->next;
- }
- if(flag==0)
- return 0;//non contiene solo pari
- else
- return 1;//contiene solo pari
- }
- //funzione verifica se due liste sono uguali
- //FUNZIONAAAAAAA
- int sonouguali(struct elemento *lista1,struct elemento *lista2){
- int flag=1;
- if(lista1!=NULL && lista2!=NULL){
- while(lista1!=NULL && lista2!=NULL && flag==1){
- if(lista1->num!=lista2->num)
- flag=0;
- else{
- lista1=lista1->next;
- lista2=lista2->next;
- }
- }
- }
- if(flag==1)
- return 1;
- else
- return 0;
- }
- //funzione concatena due liste, concatena la seconda alla prima
- //FUNZIONAAAAAAAAAAAAAAAA
- void concatena(struct elemento *lista1, struct elemento *lista2){
- struct elemento *puntatore;
- puntatore=lista1;
- while(puntatore->next!=NULL){
- puntatore=puntatore->next;
- }
- puntatore->next=lista2;
- while(puntatore->next!=NULL){
- puntatore=puntatore->next;
- }
- puntatore->next=NULL;
- }
- //funzione ritorna posizione della prima occorrenza di quel elemento, -1 se non ce
- int ritornaPos(struct elemento *lista, int numero){
- if(lista==NULL)
- return -1;
- //la lista non e' vuota
- int pos=0;
- struct elemento *puntatore;
- puntatore=lista;
- int trovato=0;
- while(puntatore->next!=NULL && trovato==0){
- if(puntatore->num==numero){
- trovato=1;
- break; }
- pos++;
- puntatore=puntatore->next;
- }
- //mi resta da controllare anche l'ultimo
- if(puntatore->num==numero){
- trovato=1;
- }
- if(trovato==1)
- return pos;
- else
- return -1;
- }
- int main(){
- struct elemento *lista1;
- lista1=creaListaSeq();
- int ris;
- ris=soloPari(lista1);
- printf("%d ", ris);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment