Está en la página 1de 7

DESARROLLO DE SOFTWARE Ing.

Jaime Farfán
PROGRAMA DE FORMACIÓN REGULAR jfarfan@tecsup.edu.pe
Laboratorio de Algoritmos y Estructuras de Datos Página 1 de 5

Alumno Nota

Yaguno Huamaní Ángel Eduardo

Grupo B
Ciclo III
Fecha de entrega 16/09/2023

I.- OBJETIVOS:
● Definir las reglas básicas para la creación de listas enlazadas

II.- SEGURIDAD:
Advertencia:
En este laboratorio está prohibida la manipulación del
hardware, conexiones eléctricas o de red; así como la
ingestión de alimentos o bebidas.

III.- FUNDAMENTO TEÓRICO:


● Revisar el texto guía que está en el campus Virtual.

IV.- NORMAS EMPLEADAS:


● No aplica

V.- RECURSOS:
● En este laboratorio cada alumno trabajará con un equipo con Windows 10.

VI.- METODOLOGÍA PARA EL DESARROLLO DE LA TAREA:


● El desarrollo del laboratorio es individual.

VII.- PROCEDIMIENTO:
1.- Definir una lista con 10 elementos, agregar el elemento 11vo usando:

listado[posicion] = valor

¿Qué pasa?
En python ocurre un error que menciona que el índice está fuera del rango, ya que no existe la posición 10 en el
listado y esa no es la forma correcta de agregar un valor a una lista.
Laboratorio de Algoritmos y Estructuras de Datos Página 2 de 5

2.- Definir una lista con 10 elementos, agregar el elemento 11 avo en forma dinámica (append), ¿Qué pasa? si
tenemos la misma lista con 100000 elementos y se agrega un dato más, ¿Qué se puede concluir?

Se agrega con exito el 11avo elemento usando “append” y de igual manera se agregaría correctamente en una
lista de 100000 elementos.

3.- Definir una clase en Python e indicar la posición de memoria que usa.
Crearlo en al archivo laboratorio-03-01.py

Las clases no tienen un espacio en la memoria en sí, los que lo tienen son las instancias de objetos como en el
siguiente ejemplo.

Se imprimió la clase Node y solo mostro su nombre, en cambio al mostrar el valor de “a” siendo un objeto
instanciado de la clase Node nos muestra su posición en la memoria

4.- En la clase Node hacer los cambios siguientes

# Node of a Single Linked List


class Node:

# Constructor
def __init__(self):
self.data = None
self.next = None

# return true if the node point to another node


def hasNext(self):
return self.next != None

Crear una instancia de la clase Node con el siguiente código

node1 = Node()
Laboratorio de Algoritmos y Estructuras de Datos Página 3 de 5

node1.data = 10

node2 = Node()
node2.data = 20

node1.next = node2

print("node1.next -->",node1.next)
print("node2.next -->",node2.next)

Comentar el código, adjuntar evidencia de la ejecución


Se muestra la posición de la memoria del objeto node2 al imprimir node1.next y al mostrar node2.next imprime
None ya que no se le asignó ningún valor y está mostrando el que tiene por defecto en la clase Node.

Ejercicios: Sobre lo que ya existe, realizar lo siguiente en orden secuencial


- Paso 1: Crear el node0 con el valor de 0, y colocarlo adelante del node1
- Paso 2: Crear el node4 con el valor de 40 y colocarlo después del node2
- Paso 3: Crear el node3 con el valor de 30 y colocarlo entre el node2 y node4

5.- Crear la clase de LinkedList en el archivo laboratorio-03-02.py


Incluir la definición de la clase Node

# Node of a Single Linked List


class LinkedList :

# Constructor
def __init__(self):
self.head = None
self.length = 0
Laboratorio de Algoritmos y Estructuras de Datos Página 4 de 5

def print( self ):


node = self.head
while node != None:
print(node.data, end =" => ")
node = node.next
print("NULL")

Crear una instancia de la clase LinkedList y ejecutar el método print()

6.- Insertar datos al inicio de un Linked List agregar el siguiente método a la clase LinkedList

# Insert an item at the begin


def insertAtBegin(self,data):

newNode = Node()
newNode.data = data

if self.length == 0:
self.head = newNode
else:
newNode.next = self.head
self.head = newNode

self.length += 1

Crear un Linked List con los siguientes datos: 10, 20, 30, 40
Laboratorio de Algoritmos y Estructuras de Datos Página 5 de 5

10 🡪 20 🡪 30 🡪 40 🡪 NULL

7.- Insertar datos al final de un Linked List agregar el siguiente método a la clase LinkedList

# Method for inserting a new node at


# the end of a Linked List
def insertAtEnd(self,data):

newNode = Node()
newNode.data = data

current = self.head

while current.next != None:


current = current.next

current.next = newNode
self.length += 1

Crear un Linked List con los siguientes datos: 50, 51, 52, 53, 54

50 🡪 51 🡪 52 🡪 53 🡪 54 🡪 NULL

8.- Insertar datos en una posición específica en el Linked List agregar el siguiente método a la clase LinkedList

# Method for inserting a new node at any position in a Linked List


def insertAtPos(self,pos,data):
if pos > self.length or pos < 0:
return None
else:
if pos == 0:
self.insertAtBegin(data)
else:
if pos == self.length:
self.insertAtEnd(data)
else:
newNode = Node()
newNode.data = data
count = 0
current = self.head
while count< pos-1:
Laboratorio de Algoritmos y Estructuras de Datos Página 6 de 5

count+= 1
current = current.next

newNode.next = current.next
current.next = newNode
self.length += 1

Crear un Linked List con los siguientes datos: 10, 20, 30, 40, 41, 42, 43, 44, 45, 50, 51, 52, 53, 54

9.- Liberación de datos en una posición específica en el Linked List agregar el siguiente método a la clase
LinkedList

def clear( self) :


self.head = None

Usar el método clear para limpiar datos

No fue en una posición específica, eliminó todos los valores de la lista

CONCLUSIONES:
1. La práctica de laboratorio enseña cómo funcionan las listas enlazadas
haciendo uso de atributos como data y next que sirven para representar un
valor almacenado en la lista y un puntero al siguiente valor de la lista.
2. Tiene métodos como insertAtBegin que inserta un nuevo nodo al principio
de la lista, insertAtEnd que inserta un nuevo nodo al final de la lista y
finalmente insertAtPos que inserta un nuevo nodo en una posición
específica en la lista.
3. El método print(), asigna el valor de self.head a una variable “node”, para
recorrer en los valores de la lista, pero si se usa el metodo clear o la lista
de por sí ya está vacía, no recorre por la lista y finalmente imprime “NULL”

También podría gustarte