SHARE
TWEET

Untitled

a guest Apr 25th, 2019 66 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct node {
  5.     int valor;
  6.     struct node *prox;
  7.     struct node *ante;
  8. }Lista;
  9.  
  10. Lista *criar (Lista*, int x);
  11. void show(Lista *);
  12. Lista *remover(Lista*, int);
  13. Lista *dividir (Lista *, int);
  14.  
  15. int main (){
  16.     Lista *prim = NULL,*prim2;
  17.     int i,num;
  18.    
  19.     for (i=0;i<5;i++)
  20.     prim = criar(prim,i);
  21.  
  22.     show(prim);
  23.     printf ("\nInforme o valor a ser excluido : ");
  24.     scanf ("%d",&num); 
  25.     prim = remover(prim, num);
  26.     printf ("\n\nLista com exclusao\n");   
  27.     show(prim);
  28.    
  29.     printf ("\nA partir de qual valor deseja dividir?: ");
  30.     scanf ("%d",&num);
  31.     prim2 = dividir(prim,num);
  32.     printf ("\n\nLista dividida \n");
  33.     show (prim2);  
  34.     return 0;
  35. }
  36.  
  37. Lista *dividir (Lista *ini, int x){
  38.     Lista *p=ini->prox, *q = ini, *ini2=NULL;
  39.     for (; p != ini && p->valor != x ; q = p, p = p->prox);
  40.     ini2 = p;
  41.     if ( p-> valor == x){
  42.          if ( p == ini){
  43.         ini = ini->prox;
  44.         ini->ante = q;
  45.     }else {
  46.         p->ante = ini2->ante;
  47.         ini2->ante = q;
  48.         p->ante = p;       
  49.     }
  50.     q -> prox = ini2;
  51. }
  52.     return ini2;
  53. }
  54.  
  55. void show(Lista *ini){
  56.     Lista *p=ini;
  57.     while (1){
  58.         printf ("%d -> ",p->valor);
  59.         p=p->prox;
  60.         if (p==ini){
  61.             break;
  62.         }
  63.     }
  64. }
  65.  
  66. Lista *remover(Lista *ini, int x){
  67.     Lista *p = ini->prox, *q = ini;
  68.     for (; p != ini && p->valor != x ; q = p, p = p->prox);
  69.     if (p->valor == x){
  70.         if ( p == ini){
  71.             ini = ini->prox;
  72.             ini->ante = q;
  73.         }else {
  74.             p->prox->ante = q;
  75.         }
  76.         q->prox = p->prox;
  77.         free(p);
  78.     }
  79.     return ini;
  80. }
  81.  
  82. Lista *criar (Lista *ini, int x){
  83.     Lista *p, *q;
  84.     p = malloc(sizeof(Lista));
  85.     if (!p){
  86.         printf("Memória Insuficiente!!");
  87.         exit (-1);
  88.     }
  89.    
  90.     p->valor = x;
  91.    
  92.     if ( ini == NULL){
  93.         ini = p;
  94.     }else {
  95.         q->prox = p;
  96.     }
  97.    
  98.     ini->ante = p;
  99.     p->ante = q;
  100.     p->prox = ini;
  101.     q = p;
  102.        
  103.     return ini;
  104. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top