Red de conocimiento informático - Conocimiento informático - ¿Después de aprender C?

¿Después de aprender C?

Si aprende el lenguaje C, no conocerá las estructuras de datos, por lo que tendrá que aprender estructuras de datos, como listas vinculadas, árboles, gráficos y otras estructuras importantes.

Acabo de terminar de aprender el lenguaje C antes y No sé mucho sobre estructuras de datos. De hecho, lo más importante al aprender estructuras de datos es aprender el uso de definiciones de tipos. Una vez que las comprenda, estará bien. Conceptos abstractos, los programas anteriores no se pueden ejecutar directamente. Por ejemplo, algunas de las funciones anteriores deben definirse usted mismo para funcionar.

Ahora le daré algunas preguntas. No es necesario que lea los datos. Libro de estructura. Puede hacerlo. Las preguntas deben estar relacionadas con el conocimiento de la estructura de datos. Si compara estas preguntas para aprender el conocimiento de la estructura de datos, creo que pronto comprenderá la estructura de datos.

1. Diseñe una lista enlazada circular única y realice el análisis en la operación de eliminación correspondiente.

Entrada de datos:

La primera línea es el número de enteros positivos m.

La segunda línea es el número de m enteros positivos a procesar, separados por espacios.

La tercera línea es la ubicación de los datos que se eliminarán, que puede ser el valor de varios ciclos.

Salida:

Muestra la disposición de los datos eliminados, separados por espacios.

Ejemplo:

Archivo de entrada input1.txt:

3

1 2 3

5 p>

Salida: (salida estándar)

1 3

2. Diseñe una lista de secuencia ordenada y requiera que los elementos de las dos listas de secuencia estén ordenados, y luego salida. La principal diferencia entre una lista de secuencia ordenada y una lista secuencial es que los elementos de datos en una lista de secuencia ordenada se ordenan por valores de elementos de datos no decrecientes.

Entrada de datos:

La primera fila contiene los m datos de la primera tabla de secuencia a procesar.

La segunda línea contiene la primera lista de secuencias a procesar, m enteros positivos separados por espacios.

La tercera línea es la segunda tabla de secuencia a procesar y contiene n datos.

La cuarta línea es la segunda lista de secuencia a procesar y contiene n enteros positivos separados por espacios.

Salida de datos:

Emite la lista de secuencia ordenada fusionada, con espacios que separan los datos.

Ejemplo:

Archivo de entrada input2.txt:

2

1 4

2

3 2

Salida: (salida estándar)

1 2 3 4

3 Escribe un algoritmo para determinar expresiones aritméticas Emparejamiento de apertura y corchetes de cierre.

Entrada de datos:

La primera línea: el número de expresiones aritméticas n

La segunda línea para (n + 1): n expresiones aritméticas

Salida de datos:

De la primera línea a la enésima línea: si n expresiones aritméticas coinciden, la coincidencia es 1 y las no coincidentes son 0.

Ejemplo:

Archivo de entrada input4.txt:

2

3+(4-5*6)

1-((4-8/2)

Salida: (salida estándar)

1

4. Diseño de pila de cadena. Necesidad de utilizar Diseño de pila en cadena para implementar la pila

Entrada de datos:

Primera línea: m datos que se colocarán en la pila

Tercera línea: Sacar. enésimo dato.

Salida de datos:

Emite el valor del enésimo dato

Entrada de archivo txt:

5<. /p>

2 4 6 8 10

4

Salida: (salida estándar)

4

5. la cadena utiliza una estructura de almacenamiento de matriz estática y escribe una función para reemplazar la cadena. En otras palabras, es necesario encontrar si hay una subcadena T en la cadena principal S. Si la subcadena T existe en la cadena principal S, reemplace la subcadena T con la subcadena V; si no hay una subcadena T en la cadena principal S, devuelva 0.

Entrada de datos:

La primera fila: el número de cadenas de prueba n

La segunda fila de la fila (n + 1): el valor de n cadenas

(n + 2) fila: subcadena T

(n + 3) fila: subcadena V

Salida de datos:

La primera línea de la enésima línea: n cadenas después del procesamiento, si existe la subcadena T, se devuelve la cadena reemplazada, si la subcadena T no existe, se devuelve 0.

Ejemplo:

Archivo de entrada input7.txt:

2

Soy estudiante

Soy un profesor

Estudiante

Profesor

Salida:

Soy profesor

6. estar en una estructura de almacenamiento de matriz estática, intente comparar el tamaño de dos cadenas.

Entrada de datos:

Primera fila: el valor de la primera cadena

Segunda fila: el valor de la segunda cadena

Datos salida:

La primera línea: el resultado de la comparación de dos cadenas. El resultado de la comparación puede ser mayor, igual o menor que tres situaciones, y la salida es ">.", "=", respectivamente. .

Ejemplo:

Archivo de entrada input8.txt:

Soy estudiante

Soy profesor

Salida: (salida estándar)

<

7. Sean matrices simétricas A, B y C almacenadas n veces en orden ascendente utilizando el almacenamiento comprimido. es un tipo entero y requiere: implementar la suma de matrices C = A + B y la multiplicación de matrices C = A × B.

Entrada de datos:

Primera fila: el número de filas y columnas de la matriz m.

La segunda fila de la fila (m + 1): el valor de cada fila de la matriz A.

La segunda a (m + 1) filas: el valor de cada fila de la matriz A.

Filas (m+2) a (2m+1): los valores de cada fila de la matriz B.

Salida de datos:

Fila 1 a fila m: los valores de cada fila de la matriz C.

Fila m+1 a fila 2m: los valores de cada fila de la matriz D.

Ejemplo:

Archivo de entrada input10.txt:

2

1 2

3 4 p>

5 6

7 8

Salida: (salida estándar)

6 8

10 12

19 22

43 50

8. Si los elementos distintos de cero en una matriz dispersa se almacenan en una matriz unidimensional en orden de fila principal, y use una matriz bidimensional para Indica si el elemento correspondiente en la matriz dispersa es un elemento cero. Si un elemento en la matriz dispersa es un elemento cero, el elemento correspondiente en la posición correspondiente en la matriz bidimensional. la matriz será 0; de lo contrario, será 1. Por ejemplo, una matriz dispersa A puede representarse mediante una matriz unidimensional V={10, 20, 30, 40} y una matriz bidimensional V={10, 20, 30, 40}. 20, 30, 40} y una matriz bidimensional {1, 0, 1, 0, 0, 0, 1, 1, 0, 0} para representar la matriz dispersa. Implemente la operación de suma de matrices X = X + Y utilizando la estructura de almacenamiento de matriz dispersa descrita anteriormente.

Entrada de datos:

Primera fila: el número de m elementos distintos de cero en la matriz X.

La segunda fila: los valores de m elementos distintos de cero en la matriz X.

La tercera fila: la matriz bidimensional 0, 1 de la matriz X.

La cuarta fila: el número n de cada elemento distinto de cero en la matriz Y.

La quinta fila: los valores de n elementos distintos de cero en la matriz Y.

Línea 6: Matriz bidimensional 0,1 de la matriz Y.

Salida de datos:

Primera fila: el valor de cada elemento distinto de cero de la matriz X después de sumar Y.

La segunda fila: la matriz bidimensional de 0 y 1 después de la suma de las matrices XY.

Ejemplo:

Archivo de entrada input11.txt:

2

1 2

0 1 0 1

2

3 4

1 0 1 0

Salida: (salida estándar)

3 1 4 2

1 1 1 1

9. Supongamos que el peso de los artículos que se pueden cargar en la mochila es s, y hay n artículos en total, cuyos pesos son w[0],w[1],... ,[n-1]. Si hay una opción que cumple con los requisitos anteriores, se dice que el problema de la mochila tiene solución; de lo contrario, se dice que el problema no tiene solución.

Entrada de datos:

La primera línea: el número de conjuntos de prueba m.

Segunda línea: valor del primer caso de prueba.

La tercera línea: el número de elementos del primer caso de prueba n.

La cuarta línea: los pesos de los n elementos del primer caso de prueba, separados por espacios.

La quinta línea: el valor s del segundo caso de prueba.

Línea 6: El número de elementos en el segundo caso de prueba n.

Línea 7: Los pesos de los n elementos del segundo caso de prueba, separados por espacios.

..........

Línea 2m: valor s del m-ésimo caso de prueba.

Línea 2m + 1: Número de elementos n para el m-ésimo caso de prueba.

Línea 2m + 2: Los pesos de los n elementos del m-ésimo caso de prueba, separados por espacios.

Salida de datos t:

Línea 1 a línea m: salida si tiene éxito o no. Si se pueden ingresar elementos con una suma total de s, salida 1; de lo contrario, salida. 0.

Ejemplo:

Archivo de entrada input13.txt:

2

21

5

2 5 9 11 13

13

4

2 3 5 8

Salida: (salida estándar) p>

1

10. Utilice un algoritmo recursivo para resolver el problema de búsqueda binaria.

Entrada de datos:

La primera línea: el número de conjuntos de prueba m.

La segunda línea: el número de datos de prueba n para el primer caso de prueba.

La tercera línea: el valor s del primer caso de prueba.

La cuarta línea: n datos de prueba del primer caso de prueba.

La quinta línea: n datos de prueba del segundo caso de prueba.

Línea 6: El valor s del segundo caso de prueba.

La séptima línea: n datos de prueba del segundo caso de prueba.

..........

Línea 2m: n datos de prueba del m-ésimo caso de prueba.

Línea 2m+1: valor s del m-ésimo caso de prueba.

Línea 2m + 2: n datos de prueba del m-ésimo caso de prueba.

Salida de datos:

La primera línea de la línea m: si la salida es exitosa, si se puede encontrar, genera la posición de verificación; de lo contrario, genera 0.

Ejemplo:

Archivo de entrada input14.txt:

2

5

3

2 3 5 9 11

5

4

2 3 5 9 11

Salida: (salida estándar)

2

11. Reconstruya el árbol binario basándose en la entrada y salida de la secuencia de nodos atravesada en diferentes órdenes

Entrada de datos:

La primera línea es un número entero N (1 <= N <= 20), que indica cuántos ejemplos de prueba hay. Hay un ejemplo de prueba para cada línea a continuación. El primero de cada ejemplo de prueba es un número entero M, que indica el orden de salida transversal, donde M = 0 significa preorden; M = 1 significa orden medio; M = 2 significa postorden.

Luego hay una secuencia de caracteres, representada por A-Z y #, donde A-Z representa nodos y # representa nulo. Si la posición de la cadena donde se encuentra el carácter es i (i es un número entero positivo y la posición comienza a contar desde 1), entonces el nodo en la posición i*2,i*2+1 es su nodo secundario. Si i*2,i*2+1 excede la longitud de la cadena, significa que el nodo secundario está vacío.

Salida de datos:

Genera los resultados de un ejemplo por línea. Una cadena sin espacios entre ellos.

Ejemplo:

Nombre del archivo de entrada: input16.txt

2

0 AB#CD######EF

1 AB#CD######EF

Salida:

ABCDEF

CBEDFA

12 Reconstruya el árbol binario de acuerdo con las secuencias transversales de preorden y en orden de entrada del árbol binario, y genere los nodos secundarios izquierdo y derecho del nodo correspondiente.

Entrada de datos:

La primera línea es un número entero N (1<=N<=20), que indica cuántos ejemplos de prueba hay. La primera línea de cada ejemplo de prueba a continuación es un recorrido de preorden del árbol binario del ejemplo de prueba, la segunda línea es un recorrido en orden y la tercera línea comienza con un número entero M, que indica el número de resultados de salida solicitados. , seguido de M nodos. Separe cada nodo con un espacio.

Salida de datos:

Cada línea genera todos los resultados de un ejemplo. Si sus nodos secundarios están vacíos, se genera el carácter #. Los resultados de salida de diferentes nodos del mismo ejemplo. están separados por espacios

Ejemplo:

Nombre del archivo de entrada: input17.txt

1

ABCDEF

CBEDFA

3 A B C

Salida: (salida estándar)

B# CD ##