Anda di halaman 1dari 33

Estructuras de datos en C

Dr. Carlos Alberto Lpez Franco

Grupo de Investigacin de Sistemas Inteligentes

Cadenas
En C las cadenas se representan con un arreglo de caracteres, ejemplo:
char cad[20];

Una cadena debe terminar con el carcter \0, por lo que una cadena puede recorrerse usando while( cad[i] != \0) printf(%c, cad[i++]);
Grupo de Investigacin de Sistemas Inteligentes

Funciones de Cadenas
Para imprimir una cadena
printf(%s, cad);

Para leer una cadena


scanf(%s, &cad); gets(cad)

Grupo de Investigacin de Sistemas Inteligentes

Funciones de cadenas
Estas funciones requieren de la librera string.h Longitud de una cadena
strlen(cad);

Copiar la cadena cad a la cadena des


strcpy(des,cad);

Comparar dos cadenas


strcmp(des,cad); La funcin retorna un nmero entero mayor, igual, o menor que cero, apropiadamente segn la cadena apuntada por str1 es mayor, igual, o menor que la caden, str2 )
Grupo de Investigacin de Sistemas Inteligentes

Otras Funciones
Estas funciones requieren de la librera ctype.h Para cambiar un carcter a mayusculas
c2= toupper(c)

Para cambiar un carcter a minusculas


c2= tolower(c)
Grupo de Investigacin de Sistemas Inteligentes

Ejercicios Cadenas
Escribe una funcin que regrese la longitud de una cadena Escribe una funcin que copie una cadena a otra Escribe una funcin que compare dos cadenas

Grupo de Investigacin de Sistemas Inteligentes

Ejercicios cadenas
Escribe una funcin que convierta una cadena a mayusculas Escribe una funcin que convierta una cadena a minusculas

Grupo de Investigacin de Sistemas Inteligentes

Ejercicios Cadenas
Escribe una funcin que busque una subcadena en una cadena y regrese la primera aparicin de dicha cadena, ejemplo, sea cad igual a Un sistema inteligente es capaz de percibir, razonar, aprender, y actuar de forma inteligente. busca(cad, inteligente)
Regresa: 11

busca(cad, hola)
Regresa: -1
Grupo de Investigacin de Sistemas Inteligentes

Ejercicios Cadenas
Escribe una funcin busca que tome como tercer argumento la posicin inicial donde se busca la cadena busca(cad, inteligente, 0)
Regresa: 11

busca(cad, inteligente, 12)


Regresa: 82

busca(cad, hola, 0)
Regresa: -1
Grupo de Investigacin de Sistemas Inteligentes

Ejercicios Cadenas
Escribe una funcin que reciba una cadena y una subcadena como parmetros, y regrese el nmero de veces que la subcadena se encuentra en la cadena. Ejemplo: Hola Mario, Hola Juan, Hola Paty, Hola Sofia, Cuenta(cad, Hola)
Regresa: 4

Cuenta(cad, Adios)
Regresa: 0
Grupo de Investigacin de Sistemas Inteligentes

Notas
Se puede definir una cadena char cad[50]={Sistemas Inteligentes"};

Grupo de Investigacin de Sistemas Inteligentes

Sentencia Break
La sentencia break, sirve para romper ciclos, por ejemplo: i=1; Cul es la salida de este programa? while(1){ printf(%d , i); i++; if (i== 100) break; }
Grupo de Investigacin de Sistemas Inteligentes

Tipos de datos abstractos


Listas

Grupo de Investigacin de Sistemas Inteligentes

Listas
Matemticamente, una lista es una secuencia de cero o ms elementos de un tipo dado (el cual generalmente es llamado tipo_elemento). Usualmente una lista se representa por una secuencia de elementos separados por comas
a1, a2, . , an

Donde n>= 0, y todo ai es de tipo_elemento


Grupo de Investigacin de Sistemas Inteligentes

Listas
El nmero n se conoce como la longitud de la lista. Asumiendo que n>=1, decimos que a1 es el primer elemento y que an es el ltimo elemento Si n es igual a cero, decimos que la lista est vacia

Grupo de Investigacin de Sistemas Inteligentes

Operaciones bsicas de una lista


Iniciliza(L). Inicializa el contador de la lista en cero.

Inserta(x,p,L). Inserta x en la posicin p, en la lista L


Agrega(x,L). Inserta x al final de la lista L. Busca(x,L). Busca x en la lista L, si x est en la lista regresa su posicin de lo contrario regresa -1 Elimina(p,L). Elimina el elemento en la posicin p Vacia(L). Regresa 1 si la lista esta vacia y 0 en caso contrario. Llena(L). Regresa 1 si la lista ha alcanzado la capacidad mxima y 0 si hay espacio libre. Muestra(L). Muestra la lista en la pantalla

Grupo de Investigacin de Sistemas Inteligentes

Representacin de una lista en C


Para representar nuestra lista en C usaremos una estructura la cual se define as struct Lista{ int n; int elementos[50]; };

En este caso los elementos son enteros pero podran ser de cualquier otro tipo, incluso otra estructura.
Grupo de Investigacin de Sistemas Inteligentes

Representacin de una lista en C


struct Lista{ int n; int elementos[50]; };
int main(){ struct Lista lista; /*declaracion variable tipo lista*/ lista.n= 0; /*inicializa lista*/ }
Grupo de Investigacin de Sistemas Inteligentes

Agregar un elemento a la lista


int main(){ int i; struct Lista lista; lista.n= 0; lista.elementos[lista.n++]= 10; lista.elementos[lista.n++]= 15; lista.elementos[lista.n++]= 20; i=0; for (i=0; i < lista.n; i++) printf("%d, ", lista.elementos[i]); }

Grupo de Investigacin de Sistemas Inteligentes

Uso de funciones para las operaciones de listas


void muestra(struct Lista L){ int i; for (i=0; i < L.n; i++) printf("%d, ", L.elementos[i]); } int main(){ struct Lista lista; lista.n= 0; lista.elementos[lista.n++]= 10; lista.elementos[lista.n++]= 15; lista.elementos[lista.n++]= 20; muestra(lista); }
Grupo de Investigacin de Sistemas Inteligentes

Tarea
Implementar las operaciones bsicas de listas usando funciones

Grupo de Investigacin de Sistemas Inteligentes

Pilas
Una pila es un tipo de dato abstracto similar a una lista, la estructura de datos que utiliza es la misma que definimos para la lista. La diferencia se encuentra en la forma de insertar y eliminar elementos, ya que en la Pila es ms restrictiva.

Grupo de Investigacin de Sistemas Inteligentes

Pilas
Una Pila es una estructura LIFO (Last In First Out), en el que el ltimo elemento en entrar es el primero en salir. Por ejemplo: push(10,P) push(20,P) push(30,P) Tenemos que P es: 10, 20, 30 pop(P) regresa 30, y la Pila queda: 10, 20
Grupo de Investigacin de Sistemas Inteligentes

Operaciones bsicas con pilas


Inicializa(P). Inicializa el contador de la pila push(x,P). Agrega x al final de la pila pop(P). Saca el elemento del tope de la pila y regresa el valor de ese elemento.

top(P). Regresa el elemento que est en el tope de la pila


vacia(P) llena(P) muesta(P)
Grupo de Investigacin de Sistemas Inteligentes

Tarea
Implementar las operaciones bsicas de una pila

Grupo de Investigacin de Sistemas Inteligentes

Tipo de dato abstracto Fila


Una Fila es una estructura FIFO (First In First Out), el primero en entrar es el primero en salir. En una Fila las inserciones se hacen solo al final y las eliminaciones al inicio. agrega(10,F) agrega(20,F) agrega(30,F) Tenemos la Fila: 10, 20, 30 quita(F), regresa 10 y la Fila queda: 20, 30
Grupo de Investigacin de Sistemas Inteligentes

Operaciones bsicas con Filas


Inicializa(P). Inicializa el contador de la pila agrega(x,F). Agrega x al final de la pila quita(F). Saca el primer elemento de la lista y regresa el valor de ese elemento.

top(P). Regresa el elemento que est al inicio de la FIla


vacia(F) llena(F) muesta(F)
Grupo de Investigacin de Sistemas Inteligentes

Tarea
Implementar las operaciones bsicas de una Fila

Grupo de Investigacin de Sistemas Inteligentes

Ejercicio
Para evaluar una expresin aritmtica podemos usar dos pilas, una que almacene los operandos y otra los operadores. Por ejemplo: 2+3*4 P1: 2, 3 P2: +, Dado que el *, tiene ms prioridad que el +, se mete a la pila el * y el operando P1: 2, 3, 4 P2: +, * Al final, se evalan todos los operadores de la pila. Para evaluar la pila se saca un operador *, dos operandos, se evalan y se mete a la pila de operandos el resultado P1: 2, 12, P2: +, Se repite lo mismo con el +, y tenemos P1: 14 P2:

Grupo de Investigacin de Sistemas Inteligentes

Ejercicio
Para evaluar una expresin aritmtica podemos usar dos pilas, una que almacene los operandos y otra los operadores. Por ejemplo: 2-3+4 P1: 2, 3, P2: Como el operador + tiene la misma prioridad que el - , se evalua la pila

P1: -1 P2:
Se mete a la pila el + y luego el 4 P1: -1,4 P2: + Al final se evaluan todos los operandos de la pila P1: 3 P2:

Grupo de Investigacin de Sistemas Inteligentes

Ejercicio FILAS y PILAS


En este ejercicio vamos a usar dos FILAS para guardar la expresin original. En la primera fila estn los operandos y en la segunda los operadores. Para los operadores usa un entero para representar el operador, por ejemplo 1 puede representar suma, 2 resta, etc.

Grupo de Investigacin de Sistemas Inteligentes

Ejercicio FILAS y PILAS


Escribe una funcin que reciba dos FILAS una de operandos y otra de operadores. La funcin deber evaluar la expresin y regresar su resultado: Ejemplo: 2+3*4, F1= 2,3,4 F2=+,* Debe regresar 14
Grupo de Investigacin de Sistemas Inteligentes

Ejercicio
Modifica el ejercicio anterior para que incluya parentesis.

Grupo de Investigacin de Sistemas Inteligentes

Anda mungkin juga menyukai