#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define p printf
struct nodo{
struct nodo *sig;
struct nodo *ant;
int dato;
};
struct nodo *cab1, *cab2;
int lista_vacia(struct nodo *);
int getnumero_nodos(struct nodo *);
struct nodo *crear_nodo();
void insertar(struct nodo *, int);
void eliminar(struct nodo *, int);
void main()
{
clrscr();
p("hola mundo");
insertar(cab1, 5);
insertar(cab1, 45);
//p(" * ***%d", cab1->dato);
getch();
}
int lista_vacia(struct nodo *cab)
{
return (cab==NULL);
}
int getnumero_nodos(struct nodo *cab)
{
struct nodo *aux;
int cont=0;
if(lista_vacia(cab)==1)
return 0;
else
{
for(aux=cab; aux!=NULL; aux= aux->sig)
{cont++;}
return (cont);
}
}
struct nodo *crear_nodo()
{
struct nodo *n;
n=(struct nodo *)malloc(sizeof(struct nodo));
if(n==NULL)
{
p("memoria llena..!!");
}
return n;
}
void insertar(struct nodo *c, int dato)
{
struct nodo *n, *aux;
n=crear_nodo();
if(n!=NULL)
{
n->dato=dato;
if(c==NULL)
{
c=n;
}
else
{
for(aux=c; aux->sig!=c; aux=aux->sig){}
aux->sig=n;
n->ant=aux;
n->sig=c;
c->ant=n;
}
}
p(" **%d", cab1->dato);
}
void eliminar(struct nodo *c, int dato)
{
struct nodo *aux;
for(aux=c; aux->dato!=dato; aux=aux->sig){}
if(aux==c)
{
c=c->sig;
aux->ant=c;
c->ant=aux->ant;
insertar(cab2, aux->dato);
free(aux);
}
else
{
aux->ant->sig=aux->sig;
aux->sig->ant=aux->ant;
insertar(cab2, aux->dato);
free(aux);
}
}
ayudenme con la solucion al intentar modificar la lista enviada por parametros..!! q no sale..
Bien aqui tienes un ejemplo si tienes dudas solo me preguntas,y a todo esto porque no puedo ver el foro en mi notebook me aparece una página en blanco, gracias
#include<stdio.h>
#include<stdlib.h>
struct nodo{
int dato;
struct nodo *sig;
struct nodo *ant;
};
int numero_nodos(struct nodo **lista);
void insertar(struct nodo **lista);
void eliminar(struct nodo **lista);
void imprimir(struct nodo **lista);
int main(void){
struct nodo *lista=NULL;
insertar(&lista);
insertar(&lista);
insertar(&lista);
insertar(&lista);
imprimir(&lista);
printf("\n");
eliminar(&lista);
imprimir(&lista);
return(0);
}
int numero_nodos(struct nodo **lista){
struct nodo *aux=*lista;
int cont=0;
if(*lista==NULL){
printf("lista bacia\n");
return (1);
}
else{
while(aux!=NULL){
cont++;
aux=aux->sig;
}
}
return(cont);
}
void insertar(struct nodo **lista){
printf("ingrese valor para el nodo\n");
struct nodo *nuevo=(struct nodo*)malloc(sizeof(struct nodo));
scanf("%i",&nuevo->dato);
nuevo->sig=NULL;
nuevo->ant=NULL;
if(*lista==NULL)
*lista=nuevo;
else{
struct nodo *aux=*lista;
while(aux->sig!=NULL)
aux=aux->sig;
aux->sig=nuevo;
nuevo->ant=aux;
}
}
void eliminar(struct nodo **lista){
struct nodo *aux1=*lista,*aux2=aux1;
while(aux2->sig!=NULL){
aux1=aux2;
aux2=aux2->sig;
}
aux1->sig=NULL;
aux2->ant=NULL;
free(aux2);
}
void imprimir(struct nodo **lista){
struct nodo *aux=*lista;
printf("\nlista desde el principio hasta el final\n");
while(aux!=NULL){
printf("[%i]->",aux->dato);
aux=aux->sig;
}
printf("\n");
aux=*lista;
while(aux->sig!=NULL)
aux=aux->sig;
printf("\nlista desde el final hasta el principio\n");
while(aux!=NULL){
printf("[%i]->",aux->dato);
aux=aux->ant;
}
}