Advertisement
anambrito

criação de lista

Dec 10th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct numero {
  5.     int num;
  6.     struct numero *next;
  7. }num;
  8.  
  9. num* separa (num *inicio, int n) { //função q separa
  10.  
  11.     num *p, *new;
  12.  
  13.     p = inicio;
  14.  
  15.         while(p != NULL){           // percorre a lista principal
  16.             if(p->num == n){        // compara o num atual com o n digitado
  17.                 new = p->next;      // novo ponteiro recebe o endereço do nó solicitado
  18.                 p->next = NULL;     // separação da lista 1 da 2
  19.                 return (num*)new;   // retorna o inicio da lista 2
  20.             }
  21.             p = p->next;    // prox num
  22.         }
  23.  
  24. }
  25.  
  26. main() {
  27.    
  28.     num *inicio;
  29.     num *p;
  30.     char ch;
  31.     int control=0;
  32.     inicio = (num *)malloc(sizeof(num));
  33.  
  34.     p = inicio;
  35.  
  36.  
  37.     while(1) { // função q o user preenche os nós
  38.  
  39.         printf("Digite um num: "); scanf("%d", &p->num);getchar();
  40.         printf("Deseja continuar? [s/n]: "); scanf("%c", &ch);
  41.         printf("\n");
  42.  
  43.         if(ch == 's'){
  44.             p -> next = (num*)malloc(sizeof(num));
  45.             p = p->next;
  46.         }
  47.  
  48.         else break;
  49.  
  50.     }
  51.  
  52.     p->next= NULL;
  53.  
  54.  
  55.     p=inicio;
  56.     printf("\n");
  57.  
  58.     while( p != NULL){
  59.         printf("Número: %d\n", p->num);
  60.         p = p->next;
  61.  
  62.     }
  63.  
  64.    
  65.     int n;
  66.  
  67.     printf("\nDigite um número o qual será a subdivisão da lista: "); scanf("%d", &n);
  68.    
  69.     p = inicio; // reinicia o ponteiro
  70.  
  71.     num *new;   //novo ponteiro q percorre lista 2
  72.     new = separa (inicio, n); //função q separa
  73.  
  74.  
  75.     printf("Subdivisão 1: \n"); //prim lista
  76.     while( p != NULL){
  77.         printf("Número: %d\n", p->num);
  78.         p = p->next;   
  79.     }
  80.  
  81.     printf("\nSubdivisão 2: \n"); // seg lista
  82.     while ( new != NULL) {
  83.         printf("Número: %d\n", new->num);
  84.         new = new->next;
  85.     }
  86.  
  87. }
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement