Está en la página 1de 11

Estructura de Datos y Algoritmos I.

Por Germán Romero.

Conjuntos dinámicos

Operaciones de consulta

SEARCH

MIN

MAX

Administración de memoria en tiempo de ejecución

función malloc();

Devuelve la dirección de memoria que ya reservó (apuntador).

Estructuras de datos

Pilas (STACK)

Una estructura en la que la inserción y eliminación de datos se hace siguiendo la


política LIFO (Last In First Out)

Inserción (apilar):

PUSH(S, k)

S.top ++

S.data[S.top] = k

IS_FULL(S): return S.top == CAP

Desapilar:

POP(S)

IF IS_EMPTY(S):return error

temp = S.data[S.top]

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

S.top = S.top - 1

Return t

Colas (QUEUE)

Una estructura en la que la inserción y eliminación de datos se hace siguiendo la


política FIFO (First In First Out)

Inserción (encolar):

ENQUEUE(Q, k)

IF IS_FULL(Q)

return error

Q.tail++

Q.data[Q.tail] = k

Q.size++

Desencolar:

DEQUEUE(Q, K)

IF IS_EMPTY(Q)

return error

t = Q.data[Q.head]

Q.head++

Q.size--

return t

IS_FULL(Q)

return Q.size == capacity

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

IS_EMPTY(Q)

return Q.size == 0

Notaciones de operadores

Notación convencional (INFIX):

operando [operador] operando

Notación polaca inversa o notación postfix

operando operando [operador]

Notación prefix

[operador] operando operando

Listas (LIST)

Colecciones de elementos de un mismo tipo

A diferencia de los arreglos, no necesariamente están almacenados de manera


contigua en memoria.

Cada elemento indica la dirección del siguiente elemento mediante enlaces.

Lista ligada simple

Dirección de memoria del primer elemento se llama Head

Colección de nodos donde cada nodo contiene una liga al siguiente nodo.

search(L, K):

t = L.head

while(t!= null && t.k != k)

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

t = t.next

return t

insert(L, x):

x.next = L.head

L.head = x

append(L, x):

t=L.head

if(L.head == NULL)

L.head = x

return

while(t.next != NULL)

t = t.next

t.next = x

delete(L, k):

if(L.head.k == k)

L.head = L.head.next

return

t = L.head

while(t.next != NULL && t.next.k != k)

t= t.next

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

if(t.next == NULL)

return error

t.next = t.next.next

Lista doblemente ligada

Colección de nodos donde cada nodo contiene una liga al siguiente nodo y al anterior.

search(L, k):

t = L.head

while(t!= NULL && t.k != k)

t= t.next

return t

insert(L, k):

x.next = L.head

if(L.head != NULL)

L.head.prev = x

L.head = x

append(L, x):

if(L.head == NULL)

L.head = x

return

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

t = L.head

while(t.next != NULL)

t = t.next

t.next = x

delete(L, k):

t = search(L, k)

if (t == NULL)

return error

if (t.prev != NULL)

t.prev.next = t.next

if (t.next != NULL)

t.next.prev = t.prev

if (t == L.head)

L.head = L.head.next

Lista ligada simple circular

Colección de nodos donde cada nodo contiene una liga al siguiente nodo, y el último
al primero.

search(L, K):

t = L.head

while(t!= null && t.k != k)

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

t = t.next

if(t==L.head)

return NULL

return t

insert(L, x):

if(L.head ==NULL)

L.head = x

x.next = x

return

x.next = L.head

t= L.head

while(t.next!=L.head)

t= t.next

t.next = x

L.head = x

append(L, x):

if(L.head ==NULL)

L.head = x

x.next = x

return

x.next = L.head

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

t= L.head

while(t.next!=L.head)

t= t.next

t.next = x

delete(L, k):

if(L.head = NULL)

return error

if(L.head.k == k)

L.head = NULL

t = L.head

while(t.next.k != k)

t=t.next

if(t==L.head)

return error

if(t.next == L.head)

L.head = L.next.next

t.next = t.next.next

Lista doblemente ligada circular

search(L, K):

t = L.head

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

while(t!= null && t.k != k)

t = t.next

if(t==L.head)

return NULL

return t

insert(L, x):

If(L.head==NULL)

L.head = x

L.hed.prev = x

L.head.next

x.next = L.head

x.prev = L.head.prev

L.head.prev.next = x

L.head.prev = x

L.head = x

append(L, x):

if(L.head ==NULL)

L.head = x

L.head.prev = x

L.head.next

x.next = L.head

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

x.prev = L.head.prev

L.head.prev.next = x

L.head.prev = x

delete(L, k):

t = search(L, k)

if(t==NULL)

return error

if(t==t.next)

L.head=NULL

return

t.prev.next = t.prev

t.next.prev = t.prev

if(t==L.head)

L.head = L.head.next

Diferencias entre C y Python

C Python

Lenguaje compilado (primero se hace la Lenguaje interpretado (la traducción y


traducción de alto nivel a lenguaje máquina, ejecución se va haciendo línea por línea)
y luego se ejecuta)

Declaración explícita Declaración implícita en la asignación

Es necesario un main No necesita ninguna función en particular

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.
Estructura de Datos y Algoritmos I.
Por Germán Romero.

Directiva de preprocesamiento #include Directiva de preprocesamiento import

No es fuertemente tipado. Es fuertemente tipado

Se puede usar un tipo de dato como otro Las estructuras de control se delimitan con
distinto [por ejemplo char++ (char a int) o sangrado (indentation)
while(char) (char a bool)] Las estrucuras de
control se delimitan con ^{}

Análisis de algoritmos

Recurrencias:

Es una función que se expresa en términos de sí misma, pero con entradas


menores.

Log = logaritmo en base 2 (en ciencias de la computación)

Negrete, M. De la clase de EDA I, impartida en la Facultad de Ingeniería de la Universidad Nacional


Autónoma de México.

También podría gustarte