Error al ejecutar la tabla de secuencia del lenguaje C
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.