#include<stdlib.h>
#include<stdio.h>
typedef struct _nodo
{
int valor;
struct _nodo *siguiente;
}tipoNodo;
typedef tipoNodo *pNodo;
void Anadir (pNodo *primero,pNodo *ultimo,int v)
{
pNodo nuevo;
nuevo=(pNodo) malloc(sizeof(tipoNodo));
nuevo-> valor=v;
nuevo->siguiente=NULL;
if(*ultimo)
(*ultimo)->siguiente=nuevo;
*ultimo=nuevo;
if(!(*primero))
*primero=nuevo;
}
int leer(pNodo *primero,pNodo *ultimo)
{
pNodo nodo;
int v;
nodo=*primero;
if(!nodo)
return 0;
*primero=nodo ->siguiente;
v=nodo->valor;
free(nodo);
if(!*primero)
*ultimo=NULL;
return v;
}
int main()
{
pNodo primero =NULL,ultimo=NULL;
Anadir(&primero,&ultimo,10);
printf("Anadir(10)\n");
printf("Leer: %d\n",leer(&primero,&ultimo));
Anadir(&primero,&ultimo,40);
printf("Anadir(40)\n");
Anadir(&primero,&ultimo,30);
printf("Anadir(30)\n");
printf("Leer :%d\n",leer(&primero,&ultimo));
printf("Leer :%d\n",leer(&primero,&ultimo));
Anadir(&primero,&ultimo,90);
printf("Leer :%d\n",leer(&primero,&ultimo));
printf("Leer :%d\n",leer(&primero,&ultimo));
system("PAUSE");
return 0;
}
[MOD] Para publicar código usar las etiquetas GeSHi.
Es con delete(nodo);
como pongo el delate nodo?
Quieres poner un borrar nodo dentro de tu codigo dices?
Aca tengo unas funciones para desligar un nodo de una lista y devolverlas al programa donde se invoco, si el elemento devuelvo no es nulo entonces simplemente hace un delete(nodo); y ya
pnodo quitar_inicio(pnodo &lista)
{
pnodo borrado;
if(lista==NULL){
borrado=NULL;
}
else{
borrado=lista;
lista=lista->sig;
borrado->sig=NULL;
}
return borrado;
}
pnodo quitar_final(pnodo &lista)
{
pnodo borrado, i;
if(lista==NULL){
borrado=NULL;
}
else{
if(lista->sig==NULL){
borrado=lista;
lista=NULL;
}
else{
for(i=lista;(i->sig)->sig!=NULL;i=i->sig);
borrado=i->sig;
i->sig=NULL;
}
}
return borrado;
}
pnodo quitar_nodo(pnodo &lista, int valor)
{
pnodo borrado, i;
if(lista==NULL){
borrado=NULL;
}
else{
if(valor==lista->dato){
borrado=lista;
lista=borrado->sig;
borrado->sig=NULL;
}
else{
for(i=lista;i->sig!=NULL && valor!=(i->sig)->dato;i=i->sig);
if(i->sig!=NULL){
borrado=i->sig;
i->sig=borrado->sig;
borrado->sig=NULL;
}
else{
borrado=NULL;
}
}
}
return borrado;
}
Es en C, no C++.