Capítulo 5: Profundización en Estructuras de Datos
5.6 Ejercicios Prácticos
Ejercicio 5.6.1: Implementación de una Pila
# In Python, we can implement a stack by simply using a list where we use the append() method for push operation and pop() method for pop operation.
class Stack:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if len(self.stack) < 1:
return None
return self.stack.pop()
def size(self):
return len(self.stack)
s = Stack()
s.push("A")
s.push("B")
s.push("C")
print(s.size()) # outputs: 3
print(s.pop()) # outputs: C
print(s.size()) # outputs: 2
Ejercicio 5.6.2: Implementación de una Cola
# Queue in Python can be implemented using deque class from the collections module. Deque is preferred over list in the cases where we need quicker append and pop operations from both the ends of container, as deque provides an O(1) time complexity for append and pop operations as compared to list which provides O(n) time complexity.
from collections import deque
class Queue:
def __init__(self):
self.queue = deque()
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if len(self.queue) < 1:
return None
return self.queue.popleft()
def size(self):
return len(self.queue)
q = Queue()
q.enqueue("A")
q.enqueue("B")
q.enqueue("C")
print(q.size()) # outputs: 3
print(q.dequeue()) # outputs: A
print(q.size()) # outputs: 2
Ejercicio 5.6.3: Usando Comprensiones de Listas
Escribe una comprensión de lista que eleve al cuadrado los números pares del 0 al 10.
squares = [i ** 2 for i in range(11) if i % 2 == 0]
print(squares) # outputs: [0, 4, 16, 36, 64, 100]
Ejercicio 5.6.4: Implementando una Lista Enlazada
Este es un ejercicio más avanzado. Intenta implementar una lista enlazada simple con objetos Node
.
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def insert(self, data):
if not self.head:
self.head = Node(data)
else:
current = self.head
while current.next:
current = current.next
current.next = Node(data)
Cada ejercicio proporciona una oportunidad para aplicar los conceptos cubiertos en este capítulo, ayudando a consolidar tu conocimiento y comprensión de las estructuras de datos de Python.
5.6 Ejercicios Prácticos
Ejercicio 5.6.1: Implementación de una Pila
# In Python, we can implement a stack by simply using a list where we use the append() method for push operation and pop() method for pop operation.
class Stack:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if len(self.stack) < 1:
return None
return self.stack.pop()
def size(self):
return len(self.stack)
s = Stack()
s.push("A")
s.push("B")
s.push("C")
print(s.size()) # outputs: 3
print(s.pop()) # outputs: C
print(s.size()) # outputs: 2
Ejercicio 5.6.2: Implementación de una Cola
# Queue in Python can be implemented using deque class from the collections module. Deque is preferred over list in the cases where we need quicker append and pop operations from both the ends of container, as deque provides an O(1) time complexity for append and pop operations as compared to list which provides O(n) time complexity.
from collections import deque
class Queue:
def __init__(self):
self.queue = deque()
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if len(self.queue) < 1:
return None
return self.queue.popleft()
def size(self):
return len(self.queue)
q = Queue()
q.enqueue("A")
q.enqueue("B")
q.enqueue("C")
print(q.size()) # outputs: 3
print(q.dequeue()) # outputs: A
print(q.size()) # outputs: 2
Ejercicio 5.6.3: Usando Comprensiones de Listas
Escribe una comprensión de lista que eleve al cuadrado los números pares del 0 al 10.
squares = [i ** 2 for i in range(11) if i % 2 == 0]
print(squares) # outputs: [0, 4, 16, 36, 64, 100]
Ejercicio 5.6.4: Implementando una Lista Enlazada
Este es un ejercicio más avanzado. Intenta implementar una lista enlazada simple con objetos Node
.
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def insert(self, data):
if not self.head:
self.head = Node(data)
else:
current = self.head
while current.next:
current = current.next
current.next = Node(data)
Cada ejercicio proporciona una oportunidad para aplicar los conceptos cubiertos en este capítulo, ayudando a consolidar tu conocimiento y comprensión de las estructuras de datos de Python.
5.6 Ejercicios Prácticos
Ejercicio 5.6.1: Implementación de una Pila
# In Python, we can implement a stack by simply using a list where we use the append() method for push operation and pop() method for pop operation.
class Stack:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if len(self.stack) < 1:
return None
return self.stack.pop()
def size(self):
return len(self.stack)
s = Stack()
s.push("A")
s.push("B")
s.push("C")
print(s.size()) # outputs: 3
print(s.pop()) # outputs: C
print(s.size()) # outputs: 2
Ejercicio 5.6.2: Implementación de una Cola
# Queue in Python can be implemented using deque class from the collections module. Deque is preferred over list in the cases where we need quicker append and pop operations from both the ends of container, as deque provides an O(1) time complexity for append and pop operations as compared to list which provides O(n) time complexity.
from collections import deque
class Queue:
def __init__(self):
self.queue = deque()
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if len(self.queue) < 1:
return None
return self.queue.popleft()
def size(self):
return len(self.queue)
q = Queue()
q.enqueue("A")
q.enqueue("B")
q.enqueue("C")
print(q.size()) # outputs: 3
print(q.dequeue()) # outputs: A
print(q.size()) # outputs: 2
Ejercicio 5.6.3: Usando Comprensiones de Listas
Escribe una comprensión de lista que eleve al cuadrado los números pares del 0 al 10.
squares = [i ** 2 for i in range(11) if i % 2 == 0]
print(squares) # outputs: [0, 4, 16, 36, 64, 100]
Ejercicio 5.6.4: Implementando una Lista Enlazada
Este es un ejercicio más avanzado. Intenta implementar una lista enlazada simple con objetos Node
.
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def insert(self, data):
if not self.head:
self.head = Node(data)
else:
current = self.head
while current.next:
current = current.next
current.next = Node(data)
Cada ejercicio proporciona una oportunidad para aplicar los conceptos cubiertos en este capítulo, ayudando a consolidar tu conocimiento y comprensión de las estructuras de datos de Python.
5.6 Ejercicios Prácticos
Ejercicio 5.6.1: Implementación de una Pila
# In Python, we can implement a stack by simply using a list where we use the append() method for push operation and pop() method for pop operation.
class Stack:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if len(self.stack) < 1:
return None
return self.stack.pop()
def size(self):
return len(self.stack)
s = Stack()
s.push("A")
s.push("B")
s.push("C")
print(s.size()) # outputs: 3
print(s.pop()) # outputs: C
print(s.size()) # outputs: 2
Ejercicio 5.6.2: Implementación de una Cola
# Queue in Python can be implemented using deque class from the collections module. Deque is preferred over list in the cases where we need quicker append and pop operations from both the ends of container, as deque provides an O(1) time complexity for append and pop operations as compared to list which provides O(n) time complexity.
from collections import deque
class Queue:
def __init__(self):
self.queue = deque()
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if len(self.queue) < 1:
return None
return self.queue.popleft()
def size(self):
return len(self.queue)
q = Queue()
q.enqueue("A")
q.enqueue("B")
q.enqueue("C")
print(q.size()) # outputs: 3
print(q.dequeue()) # outputs: A
print(q.size()) # outputs: 2
Ejercicio 5.6.3: Usando Comprensiones de Listas
Escribe una comprensión de lista que eleve al cuadrado los números pares del 0 al 10.
squares = [i ** 2 for i in range(11) if i % 2 == 0]
print(squares) # outputs: [0, 4, 16, 36, 64, 100]
Ejercicio 5.6.4: Implementando una Lista Enlazada
Este es un ejercicio más avanzado. Intenta implementar una lista enlazada simple con objetos Node
.
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def insert(self, data):
if not self.head:
self.head = Node(data)
else:
current = self.head
while current.next:
current = current.next
current.next = Node(data)
Cada ejercicio proporciona una oportunidad para aplicar los conceptos cubiertos en este capítulo, ayudando a consolidar tu conocimiento y comprensión de las estructuras de datos de Python.