Programacion en C

Iniciado por IvoAndres, 5 Diciembre 2012, 18:33 PM

0 Miembros y 1 Visitante están viendo este tema.

IvoAndres


Hola Amigos.

Alguien me puede ayudar con un programa en C que permita ingresar elementos, al inicio, en cualquier posición y al final de una lista; así mismo, debe permitir eliminar elementos, al inicio, en cualquier posición y al final de una lista.

durasno

CitarAlguien me puede ayudar con un programa en C que permita ingresar.....
todos te podemos ayudar, mientras plantees dudas y los problemas que te surgan(para eso esta el foro)


Saludos


PD: no se hacen tareas
Ahorrate una pregunta, lee el man

twins

Hola bueno aqui tienes un codigo no esta completo falta implementar la funsion que ingresa y elima de cualquier posicion y ademas seria bueno ponerlo en un menu pero por ahora no me queda tiempo intenta continuar cordiales saludos cualquie cosa me preguntas  ;)

#include<stdio.h>
#include<stdlib.h>
struct datos{
int valor;
struct datos *sig;
};
void ingrsa_inicio(struct datos **lista);
void ingresa_final(struct datos **lista);
void ingresa_Nposicion(struct datos **lista);
void elimina_inicio(struct datos **lista);
void elimina_final(struct datos **lista);
void elimina_Nposicion(struct datos **lista);
void imprime(struct datos **lista);
int main(void){
struct datos *lista=NULL;
    ingrsa_inicio(&lista);
ingrsa_inicio(&lista);
ingrsa_inicio(&lista);
imprime(&lista);
puts("\n");
    ingresa_final(&lista);
ingresa_final(&lista);
ingresa_final(&lista);
    imprime(&lista);
return(0);
}
void ingrsa_inicio(struct datos **lista){
struct datos *nuevo=(struct datos *)malloc(sizeof(struct datos));
printf("ingrese valor para el nodo\n");
scanf("%i",&nuevo->valor);
nuevo->sig=NULL;
if(*lista==NULL)
*lista=nuevo;
else{
nuevo->sig=*lista;
*lista=nuevo;
}
}
void ingresa_final(struct datos **lista){
struct datos *nuevo=(struct datos *)malloc(sizeof(struct datos));
struct datos *aux=*lista;
printf("ingrese valor para el nodo\n");
    scanf("%i",&nuevo->valor);
nuevo->sig=NULL;
while(aux->sig!=NULL)
aux=aux->sig;
aux->sig=nuevo;
}
void ingresa_Nposicion(struct datos **lista);
void elimina_inicio(struct datos **lista){
struct datos *aux=*lista;
*lista=aux->sig;
free(aux);
}
void elimina_final(struct datos **lista){
struct datos *aux1=*lista,*aux2=aux1;
while(aux2->sig!=NULL){
aux1=aux2;
aux2=aux2->sig;
}
aux1->sig=NULL;
free(aux2);
}
void elimina_Nposicion(struct datos **lista);
void imprime(struct datos **lista){
if(*lista==NULL){
printf("lista vacia\n");
return;
}
struct datos *aux=*lista;
while(aux!=NULL){
printf("[%i]",aux->valor);
aux=aux->sig;
}
}