daily pastebin goal
9%
SHARE
TWEET

Untitled

a guest Dec 16th, 2018 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 lse{
  5.   int info;
  6.   struct lse *prox;
  7. } TLSE;
  8.  
  9. void inverte_v (TLSE* l);
  10. TLSE* inserel(TLSE *l, int elem);
  11. void imprimel(TLSE *l);
  12. void liberal(TLSE *l);
  13.  
  14. TLSE* misc (TLSE* l, int elem);
  15.  
  16. int main(void)
  17. {
  18.     int n;
  19.     TLSE*l=NULL;
  20.     int op=1;
  21.     while(op==1)
  22.     {
  23.         printf("Digite um numero para a lista: ");
  24.         scanf("%d",&n);
  25.         l=inserel(l,n);
  26.         printf("Deseja operar novamente? 1 ou 0:  ");
  27.         scanf("%d",&op);
  28.     }
  29.     int i;
  30.     printf("Lista original:\n");
  31.     imprimel(l);
  32.     printf("\n");
  33.     printf("Digite um valor para a miscelania:   ");
  34.     scanf("%d",&i);
  35.     printf("Lista modificada:\n");
  36.     TLSE*Copia=misc(l,i);
  37.     imprimel(Copia);
  38.     liberal(l);
  39.     liberal(Copia);
  40.     return 0;
  41. }
  42.  
  43. TLSE* misc (TLSE* l, int elem)
  44. {
  45.     TLSE*Copia=NULL;
  46.     TLSE*q=l;
  47.     int i;
  48.     while(q)
  49.     {
  50.         if(q->info==elem)
  51.         {
  52.             for(i=1;i<elem+1;i++) Copia=inserel(Copia,i);
  53.             Copia=inserel(Copia,elem);
  54.             for(i=1;i<elem+1;i++) Copia=inserel(Copia,i);
  55.         }
  56.         else Copia=inserel(Copia,q->info);
  57.         q=q->prox;
  58.     }
  59.     inverte_v(Copia);
  60.     return Copia;
  61. }
  62. TLSE* inserel(TLSE *l, int elem){
  63.   TLSE *novo = (TLSE *) malloc(sizeof(TLSE));
  64.   novo->prox = l;
  65.   novo->info = elem;
  66.   return novo;
  67. }
  68. void imprimel(TLSE *l){
  69.   TLSE *p = l;
  70.   while(p){
  71.     printf("%d ", p->info);
  72.     p = p->prox;
  73.   }
  74.   return;
  75. }
  76. void liberal(TLSE *l){
  77.   TLSE *p = l, *q;
  78.   while(p){
  79.     q = p;
  80.     p = p->prox;
  81.     free(q);
  82.   }
  83. }
  84. void inverte_v (TLSE* l){
  85.     int temp,n=0;
  86.     for(TLSE*h=l;h;h=h->prox)n++;
  87.     for(int i=n-1;i>0;i--){
  88.         TLSE*p=l;
  89.         for(int j=0;j<i;j++){
  90.             temp=p->info;
  91.             p->info=p->prox->info;
  92.             p->prox->info=temp;
  93.             p=p->prox;
  94.         }
  95.     }
  96.     return;
  97. }
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