Inserções de matriz
Na seção anterior, aprendemos como funciona a operação de inserção. Nem sempre é necessário que um elemento seja inserido no final de uma matriz. A seguir pode ser uma situação com a inserção de matriz -
- Inserção no início de uma matriz
- Inserção no índice dado de uma matriz
- Inserção após o índice dado de uma matriz
- Inserção antes do índice dado de uma matriz
Inserção no início de uma matriz
Quando a inserção acontece no início, ela faz com que todos os itens de dados existentes sejam deslocados um passo para baixo. Aqui, projetamos e implementamos um algoritmo para inserir um elemento no início de um array.
Algoritmo
Nós presumimos A é um array com Nelementos O número máximo de elementos que ele pode armazenar é definido porMAX. Devemos primeiro verificar se um array tem algum espaço vazio para armazenar algum elemento e então prosseguir com o processo de inserção.
begin
IF N = MAX, return
ELSE
N = N + 1
For All Elements in A
Move to next adjacent location
A[FIRST] = New_Element
end
Implementação em 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 deve produzir a seguinte saída -
Resultado
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
Inserção no Índice Dado de uma Matriz
Neste cenário, recebemos a localização exata (index) de uma matriz onde um novo elemento de dados (value) precisa ser inserido. Primeiro, devemos verificar se o array está cheio, se não estiver, então devemos mover todos os elementos de dados daquele local um passo para baixo. Isso abrirá espaço para um novo elemento de dados.
Algoritmo
Nós presumimos A é um array com Nelementos O número máximo de elementos que ele pode armazenar é 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
Implementação em 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]);
}
}
Se compilarmos e executarmos o programa acima, ele produzirá o seguinte resultado -
Resultado
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
Inserção após o índice fornecido de uma matriz
Neste cenário, recebemos uma localização (index) de uma matriz após a qual um novo elemento de dados (value) tem de ser inserido. Apenas o processo de busca varia, o resto das atividades são as mesmas do exemplo anterior.
Algoritmo
Nós presumimos A é um array com Nelementos O número máximo de elementos que ele pode armazenar é 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
Implementação em 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]);
}
}
Se compilarmos e executarmos o programa acima, ele produzirá o seguinte resultado -
Resultado
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
Inserção antes do índice fornecido de uma matriz
Neste cenário, recebemos uma localização (index) de uma matriz antes da qual um novo elemento de dados (value) tem de ser inserido. Desta vez, buscamos atéindex-1 ou seja, um local à frente de determinado índice, o restante das atividades são as mesmas do exemplo anterior.
Algoritmo
Nós presumimos A é um array com Nelementos O número máximo de elementos que ele pode armazenar é 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
Implementação em 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]);
}
}
Se compilarmos e executarmos o programa acima, ele produzirá o seguinte resultado -
Resultado
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