Inserciones de matriz
En la sección anterior, hemos aprendido cómo funciona la operación de inserción. No siempre es necesario que se inserte un elemento al final de una matriz. Lo siguiente puede ser una situación con inserción de matriz:
- Inserción al comienzo de una matriz
- Inserción en el índice dado de una matriz
- Inserción después del índice dado de una matriz
- Inserción antes del índice dado de una matriz
Inserción al principio de una matriz
Cuando la inserción ocurre al principio, hace que todos los elementos de datos existentes se desplace un paso hacia abajo. Aquí, diseñamos e implementamos un algoritmo para insertar un elemento al comienzo de una matriz.
Algoritmo
Asumimos A es una matriz con Nelementos. El número máximo de elementos que puede almacenar está definido porMAX. Primero comprobaremos si una matriz tiene algún espacio vacío para almacenar algún elemento y luego procedemos con el proceso de inserción.
begin
IF N = MAX, return
ELSE
N = N + 1
For All Elements in A
Move to next adjacent location
A[FIRST] = New_Element
end
Implementación en C
#include <stdio.h>
#define MAX 5
void main() {
int array[MAX] = {2, 3, 4, 5};
int N = 4; // number of elements in array
int i = 0; // loop variable
int value = 1; // new data element to be stored in array
// print array before insertion
printf("Printing array before insertion −\n");
for(i = 0; i < N; i++) {
printf("array[%d] = %d \n", i, array[i]);
}
// now shift rest of the elements downwards
for(i = N; i >= 0; i--) {
array[i+1] = array[i];
}
// add new element at first position
array[0] = value;
// increase N to reflect number of elements
N++;
// print to confirm
printf("Printing array after insertion −\n");
for(i = 0; i < N; i++) {
printf("array[%d] = %d\n", i, array[i]);
}
}
Este programa debería producir el siguiente resultado:
Salida
Printing array before insertion −
array[0] = 2
array[1] = 3
array[2] = 4
array[3] = 5
Printing array after insertion −
array[0] = 0
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
Inserción en el índice dado de una matriz
En este escenario, se nos da la ubicación exacta (index) de una matriz donde un nuevo elemento de datos (value) debe insertarse. Primero verificaremos si la matriz está llena, si no lo está, entonces moveremos todos los elementos de datos desde esa ubicación un paso hacia abajo. Esto dejará espacio para un nuevo elemento de datos.
Algoritmo
Asumimos A es una matriz con Nelementos. El número máximo de elementos que puede almacenar está definido porMAX.
begin
IF N = MAX, return
ELSE
N = N + 1
SEEK Location index
For All Elements from A[index] to A[N]
Move to next adjacent location
A[index] = New_Element
end
Implementación en C
#include <stdio.h>
#define MAX 5
void main() {
int array[MAX] = {1, 2, 4, 5};
int N = 4; // number of elements in array
int i = 0; // loop variable
int index = 2; // index location to insert new value
int value = 3; // new data element to be inserted
// print array before insertion
printf("Printing array before insertion −\n");
for(i = 0; i < N; i++) {
printf("array[%d] = %d \n", i, array[i]);
}
// now shift rest of the elements downwards
for(i = N; i >= index; i--) {
array[i+1] = array[i];
}
// add new element at first position
array[index] = value;
// increase N to reflect number of elements
N++;
// print to confirm
printf("Printing array after insertion −\n");
for(i = 0; i < N; i++) {
printf("array[%d] = %d\n", i, array[i]);
}
}
Si compilamos y ejecutamos el programa anterior, producirá el siguiente resultado:
Salida
Printing array before insertion −
array[0] = 1
array[1] = 2
array[2] = 4
array[3] = 5
Printing array after insertion −
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
Inserción después del índice dado de una matriz
En este escenario, se nos da una ubicación (index) de una matriz después de la cual un nuevo elemento de datos (value) debe insertarse. Solo varía el proceso de búsqueda, el resto de actividades son las mismas que en el ejemplo anterior.
Algoritmo
Asumimos A es una matriz con Nelementos. El número máximo de elementos que puede almacenar está definido porMAX.
begin
IF N = MAX, return
ELSE
N = N + 1
SEEK Location index
For All Elements from A[index + 1] to A[N]
Move to next adjacent location
A[index + 1] = New_Element
end
Implementación en C
#include <stdio.h>
#define MAX 5
void main() {
int array[MAX] = {1, 2, 4, 5};
int N = 4; // number of elements in array
int i = 0; // loop variable
int index = 1; // index location after which value will be inserted
int value = 3; // new data element to be inserted
// print array before insertion
printf("Printing array before insertion −\n");
for(i = 0; i < N; i++) {
printf("array[%d] = %d \n", i, array[i]);
}
// now shift rest of the elements downwards
for(i = N; i >= index + 1; i--) {
array[i + 1] = array[i];
}
// add new element at first position
array[index + 1] = value;
// increase N to reflect number of elements
N++;
// print to confirm
printf("Printing array after insertion −\n");
for(i = 0; i < N; i++) {
printf("array[%d] = %d\n", i, array[i]);
}
}
Si compilamos y ejecutamos el programa anterior, producirá el siguiente resultado:
Salida
Printing array before insertion −
array[0] = 1
array[1] = 2
array[2] = 4
array[3] = 5
Printing array after insertion −
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
Inserción antes del índice dado de una matriz
En este escenario, se nos da una ubicación (index) de una matriz antes del cual un nuevo elemento de datos (value) debe insertarse. Esta vez buscamos hastaindex-1 es decir, una ubicación por delante del índice dado, el resto de las actividades son las mismas que en el ejemplo anterior.
Algoritmo
Asumimos A es una matriz con Nelementos. El número máximo de elementos que puede almacenar está definido porMAX.
begin
IF N = MAX, return
ELSE
N = N + 1
SEEK Location index
For All Elements from A[index - 1] to A[N]
Move to next adjacent location
A[index - 1] = New_Element
end
Implementación en C
#include <stdio.h>
#define MAX 5
void main() {
int array[MAX] = {1, 2, 4, 5};
int N = 4; // number of elements in array
int i = 0; // loop variable
int index = 3; // index location before which value will be inserted
int value = 3; // new data element to be inserted
// print array before insertion
printf("Printing array before insertion −\n");
for(i = 0; i < N; i++) {
printf("array[%d] = %d \n", i, array[i]);
}
// now shift rest of the elements downwards
for(i = N; i >= index + 1; i--) {
array[i + 1] = array[i];
}
// add new element at first position
array[index + 1] = value;
// increase N to reflect number of elements
N++;
// print to confirm
printf("Printing array after insertion −\n");
for(i = 0; i < N; i++) {
printf("array[%d] = %d\n", i, array[i]);
}
}
Si compilamos y ejecutamos el programa anterior, producirá el siguiente resultado:
Salida
Printing array before insertion −
array[0] = 1
array[1] = 2
array[2] = 4
array[3] = 5
Printing array after insertion −
array[0] = 1
array[1] = 2
array[2] = 4
array[3] = 5
array[4] = 3