#1 Listas enlazadas Insertar!
Hola, quisiera que me ayudaran, es que quisiera que me codigo, inserte al inicio y al final de la lista. Al me podria ayudar con esto y ver como quedaria ya con esas implementaciones, se los agardeceria, ya llevo mucho tiempo y no me sale 
#include"stdafx.h"
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#include"malloc.h"
struct nodoLista{
char dato;
struct nodoLista *ptrsig; /*apuntador al siguiente nodo*/
};
typedefstruct nodoLista NodoLista;
typedef NodoLista *ptrNodoLista;
void insertar(ptrNodoLista *ptrS,char valor);
char eliminar (ptrNodoLista *ptrS,char valor);
void imprime(ptrNodoLista ptrActual);
int vacia(ptrNodoLista ptrS);
int main(){
ptrNodoLista ptrInicial=NULL;/*No existen nodos*/
int opc;
char elemento;
do{
printf("---Menu---\n");
printf("1..Insertar\n");
printf("2..Eliminar\n");
printf("3..Salir\n");
printf("opc:");scanf("%d",&opc);
switch(opc){
case 1:
system("cls");
printf("Introduzca Caracter:");scanf("\n%c",&elemento);
insertar(&ptrInicial,elemento);
imprime(ptrInicial);
system("cls");
break;
case 2:
system("cls");
if(!vacia(ptrInicial)){
printf("Introduzca elemento a Eliminar:");scanf("\n%c",&elemento);
/*si encuentra el carater lo remueve*/
if(eliminar(&ptrInicial,elemento)){
printf("Caracter eliminado\n");
imprime(ptrInicial);
}else printf("No se encuentra el caracter %c\n",elemento);
}/*fin del if*/
else printf("La lista esta vacia\n");
system("cls");
break;
case 3:exit(0);break;
default
rintf("Opcion Invalidad\n");
}}while(opc!=3);
getch();
return 0;
}
void insertar(ptrNodoLista *ptrS,char valor){
ptrNodoLista ptrNuevo; /*apuntador nuevo nodo*/
ptrNodoLista ptrAnterior;/*apuntador a un nodo anterior*/
ptrNodoLista ptrActual;/*apuntador al nodo actual*/
ptrNuevo=(struct nodoLista*)malloc(sizeof(NodoLista));/*crea un nodo*/
if(ptrNuevo!=NULL){
ptrNuevo->dato=valor;
ptrNuevo->ptrsig=NULL;
ptrAnterior=NULL;
ptrActual=*ptrS;
/*localiza la ubicacion correcta de la lista*/
while(ptrActual!=NULL && valor> ptrActual->dato){
ptrAnterior=ptrActual;
ptrActual=ptrActual->ptrsig;/*siguiente nodo*/
}
/*insertar un nuevo nodo al principio de la lista*/
if(ptrAnterior==NULL){
ptrNuevo->ptrsig = *ptrS;
*ptrS=ptrNuevo;
}else{
ptrAnterior->ptrsig=ptrNuevo;
ptrNuevo->ptrsig=ptrActual;
}
}/*fin de if*/
else printf("No se inserto dato no hay espacio disponible en memoria");
}/*fin de la funcion insertar*/
char eliminar (ptrNodoLista *ptrS,char valor){
ptrNodoLista ptrAnterior;
ptrNodoLista ptrActual;
ptrNodoLista ptrTemp;/*apuntador a un nodo temporal*/
/*eliminar primer nodo*/
if(valor==(*ptrS)->dato){
ptrTemp=*ptrS;/*almacena el nodo a eliminar*/
*ptrS=(*ptrS)->ptrsig;/*desata el nodo*/
free(ptrTemp);/*libera memoria del nodo desatado*/
return valor;
}/*fin del if*/
else {
ptrAnterior=*ptrS;
ptrActual=(*ptrS)->ptrsig;
while(ptrActual!=NULL && ptrActual->dato !=valor){
ptrAnterior=ptrActual;
ptrActual=ptrActual->ptrsig;
}
/*elimina nodo actual*/
if(ptrActual!=NULL){
ptrTemp=ptrActual;
ptrAnterior->ptrsig=ptrActual->ptrsig;
free(ptrTemp);
return valor;
}
}/*fin else*/
getch();
}/*fin dela funcion eliminar*/
void imprime(ptrNodoLista ptrActual){
if(ptrActual==NULL)printf("La lista esta vacia\n");
else{
/*mientras no sea el final de la lista*/
while(ptrActual!=NULL){
printf("%c->",ptrActual->dato);
ptrActual=ptrActual->ptrsig;
}
printf("NULL\n");
}/*fin del else*/
getch();
}/*fin de la funcion imprimir*/
int vacia(ptrNodoLista ptrS){
return ptrS==NULL;
}/*fin dela funcion vacia*/
los system cls, es clrscr. Espero me puedan ayudar, se los agradeceria.

#include"stdafx.h"
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#include"malloc.h"
struct nodoLista{
char dato;
struct nodoLista *ptrsig; /*apuntador al siguiente nodo*/
};
typedefstruct nodoLista NodoLista;
typedef NodoLista *ptrNodoLista;
void insertar(ptrNodoLista *ptrS,char valor);
char eliminar (ptrNodoLista *ptrS,char valor);
void imprime(ptrNodoLista ptrActual);
int vacia(ptrNodoLista ptrS);
int main(){
ptrNodoLista ptrInicial=NULL;/*No existen nodos*/
int opc;
char elemento;
do{
printf("---Menu---\n");
printf("1..Insertar\n");
printf("2..Eliminar\n");
printf("3..Salir\n");
printf("opc:");scanf("%d",&opc);
switch(opc){
case 1:
system("cls");
printf("Introduzca Caracter:");scanf("\n%c",&elemento);
insertar(&ptrInicial,elemento);
imprime(ptrInicial);
system("cls");
break;
case 2:
system("cls");
if(!vacia(ptrInicial)){
printf("Introduzca elemento a Eliminar:");scanf("\n%c",&elemento);
/*si encuentra el carater lo remueve*/
if(eliminar(&ptrInicial,elemento)){
printf("Caracter eliminado\n");
imprime(ptrInicial);
}else printf("No se encuentra el caracter %c\n",elemento);
}/*fin del if*/
else printf("La lista esta vacia\n");
system("cls");
break;
case 3:exit(0);break;
default
rintf("Opcion Invalidad\n");}}while(opc!=3);
getch();
return 0;
}
void insertar(ptrNodoLista *ptrS,char valor){
ptrNodoLista ptrNuevo; /*apuntador nuevo nodo*/
ptrNodoLista ptrAnterior;/*apuntador a un nodo anterior*/
ptrNodoLista ptrActual;/*apuntador al nodo actual*/
ptrNuevo=(struct nodoLista*)malloc(sizeof(NodoLista));/*crea un nodo*/
if(ptrNuevo!=NULL){
ptrNuevo->dato=valor;
ptrNuevo->ptrsig=NULL;
ptrAnterior=NULL;
ptrActual=*ptrS;
/*localiza la ubicacion correcta de la lista*/
while(ptrActual!=NULL && valor> ptrActual->dato){
ptrAnterior=ptrActual;
ptrActual=ptrActual->ptrsig;/*siguiente nodo*/
}
/*insertar un nuevo nodo al principio de la lista*/
if(ptrAnterior==NULL){
ptrNuevo->ptrsig = *ptrS;
*ptrS=ptrNuevo;
}else{
ptrAnterior->ptrsig=ptrNuevo;
ptrNuevo->ptrsig=ptrActual;
}
}/*fin de if*/
else printf("No se inserto dato no hay espacio disponible en memoria");
}/*fin de la funcion insertar*/
char eliminar (ptrNodoLista *ptrS,char valor){
ptrNodoLista ptrAnterior;
ptrNodoLista ptrActual;
ptrNodoLista ptrTemp;/*apuntador a un nodo temporal*/
/*eliminar primer nodo*/
if(valor==(*ptrS)->dato){
ptrTemp=*ptrS;/*almacena el nodo a eliminar*/
*ptrS=(*ptrS)->ptrsig;/*desata el nodo*/
free(ptrTemp);/*libera memoria del nodo desatado*/
return valor;
}/*fin del if*/
else {
ptrAnterior=*ptrS;
ptrActual=(*ptrS)->ptrsig;
while(ptrActual!=NULL && ptrActual->dato !=valor){
ptrAnterior=ptrActual;
ptrActual=ptrActual->ptrsig;
}
/*elimina nodo actual*/
if(ptrActual!=NULL){
ptrTemp=ptrActual;
ptrAnterior->ptrsig=ptrActual->ptrsig;
free(ptrTemp);
return valor;
}
}/*fin else*/
getch();
}/*fin dela funcion eliminar*/
void imprime(ptrNodoLista ptrActual){
if(ptrActual==NULL)printf("La lista esta vacia\n");
else{
/*mientras no sea el final de la lista*/
while(ptrActual!=NULL){
printf("%c->",ptrActual->dato);
ptrActual=ptrActual->ptrsig;
}
printf("NULL\n");
}/*fin del else*/
getch();
}/*fin de la funcion imprimir*/
int vacia(ptrNodoLista ptrS){
return ptrS==NULL;
}/*fin dela funcion vacia*/
los system cls, es clrscr. Espero me puedan ayudar, se los agradeceria.
0