Doubts about list chained in C

1

Hello, I made a simple threaded list in C, with the insert start and insert functions at the end, how do I do the removal functions?

#include <stdio.h>
#include <stdlib.h>

typedef struct no{

    int num;
    struct no *prox;
}No;

No* criar(){

    No *novo;
    novo=(No*)malloc(sizeof(No));

    return novo;
}

No* inicio(No* lista,int dado){

    No* novo_no;
    novo_no=criar();
    novo_no->num=dado;

    if (lista==NULL){
        lista=novo_no;
        novo_no->prox=NULL;
    }else{
        novo_no->prox=lista;
        lista=novo_no;
    }
    return lista;
}

No* fim (No* lista,int dado){

    No* novo_no;
    novo_no=criar();
    novo_no->num=dado;

    if (lista==NULL){
        lista=novo_no;
        novo_no->prox=NULL;
    }else{
        No *aux;
        aux=lista;
        while(aux->prox!=NULL){
            aux=aux->prox;
        }
        aux->prox=novo_no;
        novo_no->prox=NULL;
    }
    return lista;
}

void exibir (No* lista){

    No *aux;
    aux=lista;

    while(aux!=NULL){
        printf ("%d ",aux->num);
        aux=aux->prox;
    }
}

int main (){

    No *lista=NULL;
    lista=inicio(lista,15);
    lista=inicio(lista,75);
    lista=fim(lista,42);

    exibir(lista);

    return 0;
}
    
asked by anonymous 26.05.2018 / 23:25

1 answer

-1

You will get a lot on the linked list here: link

// Esta função recebe uma lista encadeada le
// com cabeça e remove da lista a primeira
// celula que contiver y, se tal celula existir.

void 
busca_e_remove (int y, celula *le)
{
   celula *p, *q;
   p = le;
   q = le->prox;
   while (q != NULL && q->conteudo != y) {
      p = q;
      q = q->prox;
   }
   if (q != NULL) {
      p->prox = q->prox;
      free (q);
   }
}
    
26.05.2018 / 23:32