Autor
|
Tema: necesito ayuda por favor.. listas doblemente enlazadas... diganme el error... (Leído 4,216 veces)
|
anthonynlson
Desconectado
Mensajes: 1
|
#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..
|
|
|
En línea
|
|
|
|
twins
Desconectado
Mensajes: 54
|
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; } }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Nesecio ayuda con las listas encadenadas y doblemente encadenasa de C#
.NET (C#, VB.NET, ASP)
|
alonsomzo
|
1
|
4,689
|
18 Marzo 2009, 00:33 am
por Mr. Crowley
|
|
|
listas enlazadas - ver error
.NET (C#, VB.NET, ASP)
|
Choclito
|
3
|
4,592
|
26 Agosto 2009, 18:47 pm
por raul338
|
|
|
ayuda con listas enlazadas en c++!!!!
Programación C/C++
|
guanaco112
|
3
|
3,881
|
2 Marzo 2012, 14:18 pm
por rir3760
|
|
|
Ayuda con listas enlazadas C++ solo para Masters jejejeje
Programación C/C++
|
haven7
|
0
|
2,886
|
27 Junio 2012, 03:32 am
por haven7
|
|
|
Ayuda con listas dobles Enlazadas
Programación C/C++
|
larezaka
|
3
|
2,974
|
1 Julio 2012, 17:02 pm
por larezaka
|
|