Inicio

Còdigo

                typedef struct nodo{
                  int dato;
                  struct nodo *next;
                }Nodo;

                Nodo *crearNodo(int dato){
                  Nodo *nuevo = NULL;
                  nuevo = (Nodo*)malloc(sizeof(Nodo));
                  if( nuevo != NULL ){
                    nuevo-> dato = dato;
                    nuevo-> next = NULL;
                  }
                  return nuevo;
                }
              

Còdigo

                int insertarInicio(Nodo **cabeza, int dato){
                  Nodo *nuevo == NULL;
                  nuevo = crearNodo(dato);
                  if( nuevo != NULL ){
                    nuevo->next = *cabeza;
                    *cabeza = nuevo;
                    return 1;
                  }
                  return 0;
                }
              

Còdigo

                int insertarFinal(Nodo **cabeza, int dato){
                  Nodo *nuevo = NULL;
                  *nAux = *cabeza;
                  nuevo = crearNodo(dato);
                  if( nuevo != NULL ){
                    while(nAux->next != NULL){
                      nAux = nAux->next;
                    }
                    nAux->next = nuevo;
                    return 1;
                  }
                  return 0;

                }
              

Còdigo

                void insertarEspecifico(int pos, Nodo *lista, Nodo *elemento){
                  Nod *temp = lista;
                  if (pos > 1 ){
                    for(int i = 1; i < pos-1; i++){
                      temp = temp -> next;
                    }
                    elemento -> next = temp -> next;
                    temp-> = elemento;
                  }else if( pos ){
                    temp->next = lista;
                    lista = temp;
                  }
                }
              

Còdigo

                void eliminarPrincipio(Lista* lista){
                  Nodo* eliminado = lista->cabeza;
                  lista->cabeza = lista->cabeza->next;
                  free(eliminado);
                  lista->longitud--;
                }
              

Còdigo

                void eliminarUltimo(Lista* lista){
                  if(lista->cabeza){
                    if(lista->cabeza->next){
                      Nodo *puntero = lista -> cabeza;
                      while(puntero->next->next){
                        puntero = puntero->next;
                      }
                      Nodo *eliminado = puntero -> next;
                      puntero->next = NULL;
                      free(eliminado);
                      lista->longitud--;
                    }else{
                      Nodo *eliminado = lista->cabeza;
                      lista->cabeza = NULL;
                      free(eliminado);
                      lista->longitud--;
                    }
                  }
                }
              

Còdigo

                void eliminarEspecifico(int n, Lista* lista){
                  if(lista->cabeza){
                    if(n == 0){
                      Nodo * eliminado = lista->cabeza;
                      lista->cabeza = lista->cabeza->next;
                      free(eliminado);
                    }else if(n < lista->longitud){
                      Nodo *puntero = lista->cabeza;
                      int posicion = 0;
                      while(posicion < (n-1)){
                        puntero = puntero ->next;
                        posicion++;
                      }
                      Nodo* eliminado = puntero->next;
                      puntero->next = eliminado->next;
                      free(eliminado);
                      lista->longitud--;
                    }
                  }
                }