shouldz

Lista simplesmente encadeada - Ordenada

May 7th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct no{
  5.   int valor;
  6.   struct no *proximo;
  7. };
  8. typedef struct no No;
  9.  
  10. No *criar_no(){
  11.     No *criar_no = (No*)malloc(sizeof(No));
  12.     return criar_no;
  13. }
  14.  
  15. No *inserir_ordenado(No *lista, int elemento){
  16.     No *novo_no = criar_no();
  17.     No *auxiliar, *sobreauxiliar;
  18.     //auxiliar = lista;
  19.     novo_no -> valor = elemento;
  20.     if(lista == NULL){
  21.         novo_no -> proximo = NULL;
  22.         return novo_no;
  23.     }
  24.     for(auxiliar = lista; auxiliar != NULL; auxiliar = auxiliar -> proximo){
  25.         sobreauxiliar = auxiliar -> proximo;
  26.         if(elemento > auxiliar -> valor && elemento < sobreauxiliar -> valor){
  27.             novo_no -> proximo = sobreauxiliar;
  28.             auxiliar -> proximo = novo_no;
  29.             return lista;
  30.         }if(elemento > auxiliar -> valor && sobreauxiliar == NULL){
  31.             novo_no -> proximo = NULL;
  32.             auxiliar -> proximo = novo_no;
  33.             return lista;
  34.         }if(elemento < auxiliar -> valor && auxiliar == lista){
  35.             novo_no -> proximo = lista;
  36.             return novo_no;
  37.         }
  38.     }
  39.    
  40. }
  41.  
  42. void imprimir(No *lista){
  43.     No *aux = lista;
  44.     while(aux != NULL){
  45.         printf("%d", aux -> valor);
  46.         aux = aux -> proximo;
  47.     }
  48. }
  49.  
  50. void main(){
  51.    
  52.     No *lista = NULL;
  53.    
  54.     lista = inserir_ordenado(lista, 8);
  55.     lista = inserir_ordenado(lista, 1);
  56.     lista = inserir_ordenado(lista, 6);
  57.    
  58.     imprimir(lista);
  59.    
  60.    
  61. }
Advertisement
Add Comment
Please, Sign In to add comment