Trimestre 2013 Otoño
Entrega: 26 de septiembre de 2013 a las 22:00
En esta tarea implementarás operaciones sobre una colección de
listas ligadas. Al principio tendrás N listas ligadas de enteros,
una con el número 1, otra con el número 2 y así sucesivamente hasta
que la N-ésima lista tiene el número N. A esta colección de listas
le puedes aplicar tres operaciones distintas:
Concatenación de dos listas P y Q, la cual consiste en pegar
la lista que tiene el entero Q al final de la lista que contiene
al entero P (se reporta error si P y Q están en la misma lista o
si P o Q están fuera de rango, en este caso no se modifica la
colección de listas).
Partir la lista que contiene al entero K, la cual consiste en
descubrir cuál lista tiene al entero K y partirla en dos listas:
del principio de la lista hasta el entero K y el resto de la
lista (se reporta error si K está fuera de rango, en este caso
no se modifica la colección de listas).
Reportar el tamaño de la lista que contiene al entero K (se
reporta error si K está fuera de rango).
Escribe un programa llamado listasNN.c (donde NN es tu número de
lista) que:
Lea el entero N e inicialize N listas como se indica.
Lea y efectúe M operaciones en la colección de listas.
Escriba el resultado de esas operaciones.
La entrada comenzará con los valores de N y M, después aparecerán
las M operaciones que debes hacer. Las operaciones estarán
representadas de esta forma:
La concatenación se representará por el carácter 'C' seguido
de los enteros P y Q.
La partición se representará por el carácter 'P' seguido del
entero K.
El reporte del tamaño se representará por el carácter 'T'
seguido del entero K.
El resultado de cada operación será 0 0 (si hubo error) o
1 seguido de:
El menor de P y Q en el caso de la concatenación.
El entero K en el caso de la partición.
El tamaño de la lista en el caso del reporte.
En el primer ejemplo de abajo se inicializan 3 listas y se hacen 5
operaciones, la segunda de las cuales representa un error.