Tarea 4 de Algoritmos y Estructuras de Datos

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:
  1. 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).
  2. 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).
  3. 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:
  1. Lea el entero N e inicialize N listas como se indica.
  2. Lea y efectúe M operaciones en la colección de listas.
  3. 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:
  1. La concatenación se representará por el carácter 'C' seguido de los enteros P y Q.
  2. La partición se representará por el carácter 'P' seguido del entero K.
  3. 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:
  1. El menor de P y Q en el caso de la concatenación.
  2. El entero K en el caso de la partición.
  3. 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.

Puedes suponer que 1 <= N, M <= 1000.

Entrada 1
Salida 1
Entrada 2
Salida 2
3 5
C 2 1
P 4
C 1 3
P 2
T 3
1 1
0 0
1 1
1 2
1 2
3 5
C 1 2
P 4
C 1 3
P 2
T 3
1 1
0 0
1 1
1 2
1 1

Guía para usar su cuenta de callix y enviar la tarea.