Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DESARROLLO DE SOFTWARE
Aplicacin de las estructuras de datos pila, cola y lista
#define ASCENDENTE 1
#define DESCENDENTE 0
int main() {
int a,x=0,c;
char b,d;
Lista lista = NULL;
pNodo p;
printf("\nIngresa la cantidad de elementos a Insertar:");
scanf("%d",&a);
fflush(stdin);
for(x=1;x<=a;x++)
{fflush(stdin);
printf("\nDigita una Letra:");
scanf("%c",&b);
Insertar(&lista, b);
}
MostrarLista(lista, ASCENDENTE);
MostrarLista(lista, DESCENDENTE);
getch();
printf("\nIngresa la cantidad de elementos a Borrar:");
scanf("%d",&c);
fflush(stdin);
for(x=1;x<=c;x++)
{
printf("\nDigita Letra a Eliminar:");
scanf("%c",&d);
Borrar(&lista, d);
}
MostrarLista(lista, ASCENDENTE);
MostrarLista(lista, DESCENDENTE);
BorrarLista(&lista);
getch();
return 0;
}
nuevo = (pNodo)malloc(sizeof(tipoNodo));
nuevo->valor = v;
actual = *lista;
if(actual) while(actual->anterior) actual = actual->anterior;
nuevo->siguiente = actual;
nuevo->anterior = NULL;
if(actual) actual->anterior = nuevo;
if(!*lista) *lista = nuevo;
}
else
{
nodo = *lista;
while(nodo && nodo->valor < v) nodo = nodo->siguiente;
while(nodo && nodo->valor > v) nodo = nodo->anterior;
if(nodo == *lista)
if(nodo->anterior) *lista = nodo->anterior;
else *lista = nodo->siguiente;
if(nodo->anterior)
nodo->anterior->siguiente = nodo->siguiente;
if(nodo->siguiente)
nodo->siguiente->anterior = nodo->anterior;
free(nodo);
}
void BorrarLista(Lista *lista) {
pNodo nodo, actual;
actual = *lista;
while(actual->anterior) actual = actual->anterior;
while(actual) {
nodo = actual;
actual = actual->siguiente;
free(nodo);
}
*lista = NULL;
}
nodo = lista;
if(orden == ASCENDENTE) {
while(nodo->anterior) nodo = nodo->anterior;
printf("Orden ascendente: ");
while(nodo) {
printf("%c -> ", nodo->valor);
nodo = nodo->siguiente;
}
}
else {
while(nodo->siguiente) nodo = nodo->siguiente;
printf("Orden descendente: ");
while(nodo) {
printf("%c -> ", nodo->valor);
nodo = nodo->anterior;
}
}
printf("\n");
}
Diagrama:
Ejercicio:
Describir el TAD pila y codificar la estructura de tipo pila.
Describir el TAD cola y codificar una estructura de tipo cola.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#define MAX 5
char*p[MAX];
char*crecup(void);
void calmac (char*c);
void nombre(void);
int spos,rpos;
void intro (void),revisar(void),borrar(void);
int main(void)
{
char s[80];
register int t;
spos=0;
rpos=0;
for(t=0;t<MAX;++t)p[t]=NULL;
for(;;)
{
printf("\n(I)introducir\n(L)listar\n(B)borrar\n(N)nombre del programador\n(S)salir\n");
printf("\n\nEscribir tu accion a realizar:\n");
gets(s);
*s=toupper(*s);
switch(*s)
{
system ("cls");
case 'I': system ("cls");
intro();break;
case 'L': system ("cls");
revisar();break;
case 'B': system ("cls");
borrar();break;
case 'N': system ("cls");
nombre();break;
case 'S': system ("cls");
exit(0);
}
}
system("pause");
return 0;
}
void intro (void)
{
char s[100],*p;
do
{
printf("\nIntroduce todos tus datos deseados%d:\n",spos+1);
printf("(SOLO DA (ENTER) PARA REGRESAR AL MENU PRINCIPAL)");
gets(s);
if(*s=='\0')break;
p=(char*)malloc(strlen(s)+1);
if(!p)
{
printf("NO HAY MEMORIA RESERVADA\n");
return;
}
strcpy(p,s);
calmac(p);
}
while(*s);
}
void revisar(void)
{
int t;
if(rpos==spos)
{
printf("NO HAY DATOS\n");
return;
}
for(t=rpos;t<spos;t++)
printf("\n CADENA ES %d: %s\n",t+1,p[t]);
}
void borrar(void)
{
char*q;
q=crecup();
if(q==NULL)
{
printf("NO HAY DATOS!!!\n");
return;
}
printf("ESTE ES EL DATO RECUPERADO Y BORRADO: DATO NUMERO %d: %s\n",rpos+1,q);
free(q);
}
void nombre(void)
{
printf("\nOmar Barragan Moreno");
printf("\nMATRICULA: ES162006477\n\n");
}
void calmac(char*q)
{
if(spos==MAX)
{
printf("\nLA COLA ESTA LLENA\n");
return;
}
p[spos]=q;
spos++;
}
char*crecup(void)
{
if(rpos==spos)
{
printf("\nNO HAY DATOS\n");
return NULL;
}
rpos++;
return p[rpos-1];
}
Diagrama:
Ejercicio:
Referencias
joyanes. (s.f.). C++. Recuperado el 31 de 07 de 2017, de Estructura.de.datos.en.C++.Joyanes