Red de conocimiento informático - Computadora portátil - Error al ejecutar la tabla de secuencia del lenguaje C

Error al ejecutar la tabla de secuencia del lenguaje C

Se puede ver en la salida de su pantalla. La última operación seleccionó 1, que llamó insertar

Fue en la función insertar donde ocurrió el error.

Ingresas 1 2 en la pantalla

diciéndole a la función que inserte el valor 2 antes del primer elemento.

Mira aquí:

q=&(L.elem[i-1]); //q apunta a la posición a insertar

for( p= &(L.elem[L.length-1]);p>=q;--p)//p apunta al último elemento y la condición final es p>=q

*(p+ 1)=*p ; // Retroceder comenzando desde el último elemento,

*q=e;

++L.length;

Hay No hay nada malo con estos códigos en sí.

Pero mira tu función de inicio,

.length=0;

La longitud en la inicialización es 0, lo que significa que incluso si el espacio está abierto, usted La tabla de secuencia de tampoco está asignada.

Sin embargo, usaste L.elem[L.length-1] en la función de inserción, así)

Esto es equivalente a acceder a elem[-1].

Asigne varios valores a elem en la función init y establezca la longitud al número de valores.

Pero veo que verificaste la relación entre i y la longitud en la función de inserción.

if(i<1||i>L.length+1)

Devuelve ERROR;

Pero esta no es la forma correcta de comprobarlo. Debería ser i>= L.length+1

Es decir, siempre que realice cambios aquí, el programa no saldrá mal.