Está en la página 1de 4

PILA COLA LISTA

pty_nodo pnodo; int valor; void introduciralumno (pty_nodo


char respuesta[200; char respuesta[250]; *phead,pty_nodo *ptail)
{
do{ do{ pty_nodo pnodo;
printf("Introduzca numeros:"); printf("Introduce valor : "); pnodo = (pty_nodo) malloc
scanf("%d",&valor); scanf("%d",&valor); (sizeof(ty_nodo));
getchar(); pnodo->ss = NULL;
if (!esrepetido(*phead,valor)) leerdatosalumno(pnodo);
if (!esrepetido(*phead,valor)) if (*phead==NULL)
{ anadir (valor,phead,ptail);
else *phead = pnodo;
pnodo=(pty_nodo)malloc(sizeof(ty_nodo)); else
pnodo->valor=valor; puts("Valor repetido");
printf ("Quieres introducir más (S/N)? "); (*ptail)->ss = pnodo;
getchar(); *ptail = pnodo;
pnodo->ss=*phead; gets(respuesta);
}while ((respuesta[0]=='S')|| }
*phead=pnodo;
(respuesta[0]=='s'));
INSERTAR } void leerdatosalumno (pty_nodo palumno)
printf("\nQuieres introducir otro (S/N)"); {
gets(respuesta); void anadir (int valor, pty_nodo
*phead,pty_nodo *ptail) puts ("introduce datos del alumno:");
}while((respuesta[0]=='s')|| printf("Numero de expediente: ");
(respuesta[0]=='S')); {
pty_nodo pnodo; scanf ("%d",&(palumno->nexp));
pnodo = (pty_nodo) getchar();
malloc(sizeof(ty_nodo)); printf ("Nombre: ");
pnodo->valor = valor; gets(palumno->nombre);
pnodo->ss = NULL; printf ("Primer apellido: ");
if (*phead==NULL) gets (palumno->primer_apellido);
*phead = pnodo; printf ("Curso: ");
else gets (palumno->curso);
(*ptail)->ss = pnodo; }
*ptail = pnodo;
}
void leer(pty_nodo *phead) void leer(pty_nodo *phead) void escribiralumno (pty_nodo palumno)
{ { {
pty_nodo cursor,cursor1; pty_nodo cursor,cursor1; printf("\n");
while(*phead!=NULL) while(*phead!=NULL) printf("Nexp: %d\n",palumno->nexp);
{ { printf("Nombre: %s %s\n",palumno-
cursor=*phead; cursor=*phead; >nombre,palumno->primer_apellido);
printf("%d",(*phead)->valor); printf("%d",(*phead)->valor); printf("Curso : %s\n");
*phead=(*phead)->ss; *phead=(*phead)->ss; }
free(cursor); free(cursor); void ver (pty_nodo phead)
VISUALIZAR } } {
} }
printf("\n\nLos alumnos matriculados
son: \n");
while (phead!=NULL)
{
escribiralumno (phead);
phead = phead->ss;
}
}
ELIMINAR void borrar (pty_nodo *phead, int valor)
Elimina el ultimo en entrar Elimina el primero en entrar {
pty_nodo cursor,cursor1;
void eliminar(pty_nodo *phead){ void eliminar(pty_nodo *phead) int encontrado = 0;
pty_nodo aux; { if (*phead == NULL) return;
pty_nodo aux; cursor1 = cursor = *phead;
if(*phead==NULL) { aux=*phead;
printf("Pila Vacia"); *phead=(aux)->ss; while ((cursor!=NULL)&&(!encontrado))
} free(aux); {
else { } if (cursor->valor == valor) encontrado =
*phead=(*phead)->ss; 1;
free(*phead); else
} {
} cursor1 = cursor;
cursor = cursor->ss;
}
}
if (!encontrado) return;
if (cursor==*phead)
{
*phead = (*phead)->ss;
}else
{
cursor1->ss = cursor->ss;
}
free (cursor);
}

void restar (pty_nodo *phead1,pty_nodo


head2)
{

while (head2!=NULL)
{
borrar (phead1,head2->valor);
head2= head2->ss;
}

}
void buscar(pty_nodo *phead) void buscaralumno(pty_nodo phead)
{ {
int val; int nexp;
int e=0; int encontrado;
val=2; pty_nodo cursor;
do{
if(val==((*phead)->valor)) encontrado = 0;
{ printf("Introduzca el nexp: ");
printf("Encontrado"); scanf ("%d",&nexp);
e=1; cursor = phead;
} while ((cursor!=NULL)&& (!encontrado))
else {
BUSCAR { if (cursor->nexp == nexp)
*phead=(*phead)->ss; encontrado = 1;
e=0; else
} cursor = cursor->ss;
}while(e==0);
}
}
if (encontrado)
escribiralumno (cursor);
else
printf( "el alumno no esta matriculado");

}
NO REPETIDO int esrepetido (pty_nodo phead,int valor) int esrepetido (pty_nodo phead,int valor) void anadir (pty_nodo pnuevonodo,pty_nodo
{ { *phead)
int repetido = 0; int repetido = 0; {
pty_nodo cursor; pty_nodo cursor; pty_nodo cursor1,cursor2;
cursor = phead; cursor = phead; int encontrado;
while ((cursor!=NULL)&&(!repetido)) while ((cursor!=NULL)&&(!repetido)) cursor1 = cursor2 = *phead;
{ { encontrado = 0;
if (cursor->valor == valor) if (cursor->valor == valor) while ((cursor1!=NULL) && (!encontrado))
repetido = 1; repetido = 1; {
else else if ((cursor1->valor)>(pnuevonodo-
cursor = cursor->ss; cursor = cursor->ss; >valor))
} } encontrado = 1;
return repetido; return repetido; else if ((cursor1->valor)<(pnuevonodo-
} } >valor))
{
cursor2 = cursor1;
cursor1 = cursor1->ss;
}
else return;
}
if (cursor1==*phead)
*phead = pnuevonodo;
else
cursor2->ss = pnuevonodo;
pnuevonodo->ss = cursor1;
}
do{
printf("Introduzca un numero: ");
scanf("%d",&valor);
getchar();
pnuevonodo = (pty_nodo)malloc
(sizeof(ty_nodo));
pnuevonodo->valor = valor;
pnuevonodo->ss = NULL;
anadir (pnuevonodo,&head);
printf("Quieres mas (S/N)? :");
gets(respuesta);
}while ((respuesta[0]=='S')||
(respuesta[0]=='s'));

void anadir (pty_nodo


pnuevonodo,pty_nodo *phead)
{
pty_nodo cursor1,cursor2;
int encontrado;
AÑADIR
cursor1 = cursor2 = *phead;
ORDENADO encontrado = 0;
while ((cursor1!=NULL) && (!
encontrado))
{
if ((cursor1->valor)>(pnuevonodo-
>valor))
encontrado = 1;
else
{
cursor2 = cursor1;
cursor1 = cursor1->ss;
}
}
if (cursor1==*phead)
*phead = pnuevonodo;
else
cursor2->ss = pnuevonodo;
pnuevonodo->ss = cursor1;
}
CONCATENA void concatenar (pty_nodo
R 2 LISTAS *phead,pty_nodo head1,pty_nodo
head2)
{
pty_nodo pnuevonodo;

while (head1!=NULL)
{
pnuevonodo = (pty_nodo)
malloc(sizeof(ty_nodo));
pnuevonodo->valor = head1-
>valor;
pnuevonodo->ss = NULL;
anadir(pnuevonodo,phead);
head1= head1->ss;
}
while (head2!=NULL)
{
pnuevonodo = (pty_nodo)
malloc(sizeof(ty_nodo));
pnuevonodo->valor = head2-
>valor;
pnuevonodo->ss = NULL;
anadir(pnuevonodo,phead);
head2= head2->ss;
}

También podría gustarte