Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct numero {
- int num;
- struct numero *next;
- }num;
- num* separa (num *inicio, int n) { //função q separa
- num *p, *new;
- p = inicio;
- while(p != NULL){ // percorre a lista principal
- if(p->num == n){ // compara o num atual com o n digitado
- new = p->next; // novo ponteiro recebe o endereço do nó solicitado
- p->next = NULL; // separação da lista 1 da 2
- return (num*)new; // retorna o inicio da lista 2
- }
- p = p->next; // prox num
- }
- }
- main() {
- num *inicio;
- num *p;
- char ch;
- int control=0;
- inicio = (num *)malloc(sizeof(num));
- p = inicio;
- while(1) { // função q o user preenche os nós
- printf("Digite um num: "); scanf("%d", &p->num);getchar();
- printf("Deseja continuar? [s/n]: "); scanf("%c", &ch);
- printf("\n");
- if(ch == 's'){
- p -> next = (num*)malloc(sizeof(num));
- p = p->next;
- }
- else break;
- }
- p->next= NULL;
- p=inicio;
- printf("\n");
- while( p != NULL){
- printf("Número: %d\n", p->num);
- p = p->next;
- }
- int n;
- printf("\nDigite um número o qual será a subdivisão da lista: "); scanf("%d", &n);
- p = inicio; // reinicia o ponteiro
- num *new; //novo ponteiro q percorre lista 2
- new = separa (inicio, n); //função q separa
- printf("Subdivisão 1: \n"); //prim lista
- while( p != NULL){
- printf("Número: %d\n", p->num);
- p = p->next;
- }
- printf("\nSubdivisão 2: \n"); // seg lista
- while ( new != NULL) {
- printf("Número: %d\n", new->num);
- new = new->next;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement