Sie sind auf Seite 1von 2

###:: LINKED LIST ::###

[Node]
* Contiene un valor
* Dependiendo que tipo de lista encadenada, puede tener un apuntador "next" que
es progresivo, o "previous" que es el inverso.
* Sus dons funciones principales: tener un valor y proveer un link
[LinkedList]
* Se compone de una serie de Nodos que estar interconectados
* Head que es el primer nodo de la lista
* Tail es el ltimo nodo de la lista
* Operaciones (add, delete, find, etc)
[Notes]
* C# Usa double linked lists porque es ms eficiente y ms poderoso
###:: STACK ::###
Stacks [LinkedList Implementation]
* No tiene lmite de profundidad
* Es fcil de implementar
* CONS: Cada vez que se aade un elemento a la pila, se crea un Memory allocation
* CONS: per-node memory overhead
* High Performance System issues
[Array Implementation Implementation]
* C# maneja los stacks con Arrays
* Cuando el stack est vaco, no hay ningn array
* Cuando se hace el primer push se crea un Array con fix lenght
* PUSH:
- cuando el array est lleno y hay que agregar un nuevo elemento, se crea
un nuevo array con el doble de su tamao (o dependiendo de la condicin) y se copia
todo a un nuevo array
###:: QUEUE ::###
[LinkedList Implementation]
* Head es el Queue Head
* Dequeue is RemoveFirst
* Enqueue con AddLast
* Es fcil de implementar como el Stack con LinkedList
[Array Implementation]
* Son para mayor performance
* Cuando los elementos llenan el array actual y se hace dequeue de los primeros
dos elementos (por ejemplo), cuando se hace un queue de otro el elemento nuevo,
se hace en la primer posicin que se encuentre libre en el Array, osea, desde el
index = 0
* Head es el prximo elemento para Dequeue
* Tail es el ltimo elemento Enqueued
* Si el array est lleno y se desea agregar nuevos elementos:
1. Se crea un array nuevo (doble del tamao)
2. Se copian los elementos del Head hasta el fin del Array
3. Si es necesario, dar la vuelta y copiar desde el index 0 hasta el Hea
d - 1
4. Usar el nuevo array
5. Actualizar los apuntadores de Head y Tail
[Priority Queue]
* No son FIFO

* Esta implentada con LinkedList porque es menos complicadp para ingresar eleme
ntos una vez que esta lleno el array o espacios vacos
[Notes]
* en C# son genricas y estn implementadas en Array
###:: Binary Trees ::###
* Datos con jerarqua de datos
* Existe un Root Node
* Cada
[Add]
* Recursively
* Equal values are added to the right
[Remove]
1. Find the node to be deleted:
* If the node does not exist -> Exit
2. Lead (terminal) node
* Remove parent's pointer to delete node
3. Non-Leaf node
* Find the child to replace the deleted node
* 3 cases:
a. Removed node has no right child
- find the node to remove
- has no rigth child
- promote left child
b. Removed right child has no left
- right child replaces removed
- find node to remove
- node right has no left
- promote roght child
c. Removed right child has left child
- right child's left-most child replaces removed
- find the node to remove
- node right has left
- find right's left-most child
- promote left-most child
[Traversals]
1. Pre-Order: For mathematical evaluations
* Process, VisitLeft, VisitRight
2. In-Order
* VisitLeft, Process, VisitRight
3. Post-Order: For mathematical evaluations
* VisitLeft, VisitRight, Process
###:: Hash Tables ::###
* Associative Array: index es un item que puede ser comparable pero tiene que s
er nico aunque puede tener varios valores asociados.
*

Das könnte Ihnen auch gefallen