Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include "list.h"
- #include <stdlib.h>
- int is_in(list_t* M, int val){
- if(M == NULL)
- exit(-1);
- if(empty(M))
- return 0;
- node_t *p = head(M);
- while(p!=NULL){
- if(get_val(p) == val)
- return 1;
- p = next(p);
- }
- return 0;
- }
- list_t* noTwo(list_t *L){
- if(L == NULL)
- return NULL;
- if(head(L) == NULL)
- return NULL;
- list_t *M = malloc(sizeof(*M));
- if(M == NULL)
- return NULL;
- init_list(M);
- int counter=0;
- node_t *h = head(L);
- node_t *p = h;
- node_t *q = h;
- int p_val;
- node_t *nodo = NULL;
- while(p != NULL){
- p_val = get_val(p);
- while(q != NULL){
- if(get_val(q) == p_val)
- counter++;
- q = next(q);
- }
- if(counter!=2){
- if(!is_in(M, p_val)){
- nodo = insert(M, nodo, p_val);
- if(nodo == NULL)
- exit(-1);
- }
- }
- q = h;
- counter = 0;
- p = next(p);
- }
- return M;
- }
- int main(int argc, char **argv){
- if(argc == 1){
- printf("Usage %s: %s <num1, num2, num3, ...>\n", argv[0], argv[0]);
- exit(-1);
- }
- int vals[argc-1];
- for(int i = 0; i!=argc-1; i++)
- vals[i] = atoi(argv[i+1]);
- // vals ha tutti i valori che ci servono ora!
- list_t L;
- if(init_list(&L))
- return -1;
- node_t *nodo = NULL;
- for(int i = 0; i!=argc-1; i++){
- nodo = insert(&L, nodo, vals[i]);
- if(nodo == NULL)
- return -1;
- }
- printf("La lista dei valori dati: ");
- print_list(&L);
- list_t *M = noTwo(&L);
- if(M == NULL)
- return -1;
- printf("\nLa nuova lista senza i valori che compaiono esattamente due volte: ");
- print_list(M);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement