fellipeh

Untitled

Oct 26th, 2020
2,016
144 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. typedef struct no {
  6.     int info;
  7.     struct no* prox;
  8. } No;
  9.  
  10. No* criar_lista(void) {
  11.     return NULL;
  12. }
  13.  
  14. No* inserir_item(No* lst, int valor){
  15.     No* novo = new No;
  16.    
  17.     novo->info = valor;
  18.     novo->prox = lst;
  19.    
  20.     return novo;
  21. }
  22.  
  23. No* remover_item(No* lst, int valor){
  24.     No* p = lst;  // ponteiro usado pra percorrer a lista
  25.     No* a = NULL; // ponteiro pro item anterior
  26.    
  27.     // procurando o item na lista e guardando o item anterior
  28.     while (p != NULL && p->info != valor){
  29.         a = p;
  30.         p = p->prox;
  31.     }
  32.    
  33.     if (p == NULL){ // nao acho o item na lista
  34.         return lst;
  35.     }
  36.    
  37.     // removendo o item
  38.    
  39.     if (a == NULL) { // removendo o item do inicio
  40.         lst = p->prox;
  41.     } else {
  42.         a->prox = p->prox;
  43.     }
  44.    
  45.     // delete [] p;
  46.     free(p);
  47.    
  48.     return lst;
  49. }
  50.  
  51. void imprimir_lista(No* lista){
  52.    No* p;
  53.  
  54.    for (p=lista; p != NULL; p = p->prox) {
  55.        cout << "info= " << p->info << "\n";
  56.        
  57.    }
  58. }
  59.  
  60. void liberar_lista(No* lista){
  61.     No* p = lista;
  62.    
  63.     while (p != NULL) {
  64.         // liberar da memoria
  65.         No* temp = p->prox;
  66.         free(p);    
  67.         p = temp;
  68.     }
  69.    
  70. }
  71.  
  72. No* localizar(No* lst, int valor){
  73.     No* p;
  74.    
  75.     for (p=lista; p != NULL; p = p->prox) {
  76.        if (p->info == valor) {
  77.            return p;
  78.        }
  79.    }
  80. }
  81.  
  82.  
  83. int main()
  84. {
  85.     no* lista;
  86.  
  87.     lista = criar_lista(); // inicializa a lista = NULL
  88.    
  89.     lista = inserir_item(lista, 1); // lista = 1 -> NULL
  90.     lista = inserir_item(lista, 2); // lista = 2 -> (1 -> NULL)
  91.     lista = inserir_item(lista, 3); // lista = 3 -> 2 -> 1 -> NULL
  92.     lista = inserir_item(lista, 4);
  93.    
  94.     imprimir_lista(lista);
  95.    
  96.     no* novo;
  97.    
  98.     // novo = localizar(lista, 3);
  99.     // novo->info = 33;
  100.    
  101.    
  102.     // lista = remover_item(lista, 2);
  103.     // cout << "---------------\n";
  104.     // imprimir_lista(lista);
  105.    
  106.     //liberar_lista(lista);
  107.    
  108.     return 0;
  109. }
RAW Paste Data