Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.85 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. typedef struct inteiros{
  5.   int numero;
  6.   struct inteiros *proximo;
  7. }tipo_no;
  8.  
  9. void iniciarlista(tipo_no **inicio,int num);
  10. void inserirnocomeco(tipo_no **inicio,int num);
  11. void inserirnofinal(tipo_no **inicio,int num);
  12. void inserirordenado(tipo_no **inicio,int num);
  13. void imprimirlista(tipo_no *atual);
  14. void removerelemento(tipo_no *atual,num);
  15.  
  16. int main(){
  17.   int k,num;
  18.   tipo_no *inicio=NULL,*atual;
  19.  
  20.   do{
  21.       printf("\n\n");
  22.       printf("********************************************************");
  23.       printf("\n------------Digite uma opção----------------------------");
  24.       printf("\n--------------------------------------------------------");
  25.       printf("\n| (1) Inicializar lista.");
  26.       printf("\n| (2) Inserir um elemento no começo.");
  27.       printf("\n| (3) Inserir um elemento no final.");
  28.       printf("\n| (4) Inserir um elemento ordenado.");
  29.       printf("\n| (5) Remover um elemento.");
  30.       printf("\n| (6) Verificar o tamanho da lista.");
  31.       printf("\n| (7) Verificar média simples dos elementos da lista.");
  32.       printf("\n| (8) Deslocar todos nós da lista.");
  33.       printf("\n| (9) Imprimir lista");
  34.       printf("\n| (10) Sair do programa.");
  35.       printf("\n--------------------------------------------------------\n");
  36.       scanf("%d",&k);
  37.  
  38.       switch (k){
  39.         case 1: printf("Digite um numero inteiro:");
  40.                 scanf("%d",&num);
  41.                 iniciarlista(&inicio,num);
  42.                 break;
  43.  
  44.         case 2: printf("Digite um numero inteiro:");
  45.                 scanf("%d",&num);
  46.                 inserirnocomeco(&inicio,num);
  47.                 break;
  48.  
  49.         case 3: printf("Digite um numero inteiro:");
  50.                 scanf("%d",&num);
  51.                 inserirnofinal(&inicio,num);
  52.                 break;
  53.  
  54.         case 4: printf("Digite um numero inteiro:");
  55.                 scanf("%d",&num);
  56.                 inserirordenado(&inicio,num);
  57.                 break;
  58.  
  59.         case 5: printf("Digite um numero para removelo da lista:");
  60.                 scanf("%d",&num);
  61.                 removerelemento(inicio,num)
  62.                 break;
  63.        
  64.         case 9: imprimirlista(inicio);
  65.                 break;
  66.       }
  67.     if(k>10)  {printf("\n---OPÇÃO INVALIDA---");}
  68.   }while(k!=10);
  69. return 0;
  70. }
  71.  
  72. void iniciarlista(tipo_no **inicio,int num){
  73.     tipo_no *novo;
  74.     novo=(tipo_no *) malloc(sizeof(tipo_no));
  75.     novo->numero=num;
  76.     novo->proximo=NULL;
  77.     *inicio=novo;
  78. }
  79.  
  80. void inserirnocomeco(tipo_no **inicio,int num){
  81.     tipo_no *novo;
  82.     novo=(tipo_no *) malloc(sizeof(tipo_no));
  83.     novo->numero=num;
  84.     novo->proximo=*inicio;
  85.     *inicio=novo;
  86. }
  87.  
  88. void imprimirlista(tipo_no *atual){
  89.   int i;
  90.   printf("\n\nLISTA:\n");
  91.     while(atual!=NULL){
  92.         printf("%d ",atual->numero);
  93.         atual=atual->proximo;
  94.     }
  95.   printf("\n");
  96. }
  97.  
  98. void inserirnofinal(tipo_no **inicio,int num){
  99.   tipo_no *novo,*atual=*inicio;
  100.   novo=(tipo_no *) malloc(sizeof(tipo_no));
  101.   novo->numero=num;
  102.   novo->proximo=NULL;
  103.   if(*inicio!=NULL){
  104.     while(atual->proximo!=NULL){
  105.       atual=atual->proximo;
  106.     }
  107.     atual->proximo=novo;
  108.   }
  109.   else{
  110.     *inicio=novo;
  111.   }
  112. }
  113.  
  114. void inserirordenado(tipo_no **inicio,int num){
  115.   tipo_no *novo,*atual=*inicio,*anterior=NULL;
  116.   novo=(tipo_no *) malloc(sizeof(tipo_no));
  117.   novo->numero=num;
  118.   if(*inicio!=NULL){
  119.     while((atual != NULL) && (atual->numero < novo->numero)){
  120.         anterior=atual;
  121.         atual=atual->proximo;
  122.     }
  123.     if(anterior != NULL){
  124.       anterior->proximo=novo;
  125.       if(atual==NULL){
  126.         novo->proximo=NULL;
  127.       }
  128.       else{
  129.         novo->proximo=atual;
  130.       }
  131.     }
  132.     else{
  133.       novo->proximo=*inicio;
  134.       *inicio=novo;
  135.     }
  136.   }
  137.   else{
  138.     *inicio=novo;
  139.     novo->proximo=NULL;
  140.   }
  141. }
  142.  
  143. void removerelemento(tipo_no *atual,num){
  144.    
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement