Estruturas de Dados são formas de organizar sistematicamente os dados em um programa definindo as operações que podem ser utilizadas para manipular os dados naquela estrutura. As estruturas básicas são diferentes entre si, em geral, na forma de inserir, retirar e organizar os dados internamente. Neste sentido, analise o seguinte código de uma estrutura de dados escrita na linguagem C.
#include <stdio.h> #include <stdlib.h>
#define MAX_SIZE 100 // Tamanho máximo da estrutura
// Definindo a estrutura typedef struct { int items[MAX_SIZE]; int inicio; // Índice do inicio da estrutura } Estrutura;
// Função para inicializar a estrutura void initializeEstrutura(Estrutura *estrutura) { estrutura->inicio = -1; }
// Função para verificar se a estrutura está vazia int isEmpty(Estrutura *estrutura) { return estrutura->inicio == -1; }
// Função para verificar se a estrutura está cheia int isFull(Estrutura *estrutura) { return estrutura->inicio == MAX_SIZE - 1; }
// Função para inserir um elemento na estrutura void insert(Estrutura *estrutura, int value) { if (isFull(estrutura)) { // Verifica se a estrutura está cheia printf("Erro: Estrutura cheia!\n"); return; } estrutura->items[++estrutura->inicio] = value; }
// Função para remover um elemento da estrutura int extract(Estrutura *estrutura) { if (isEmpty(estrutura)) { // Verifica se a estrutura está vazia printf("Erro: Estrutura vazia!\n"); exit(1); } return estrutura->items[estrutura->inicio--]; }
// Função para visualizar o elemento no inicio da estrutura sem removê-lo int peek(Estrutura *estrutura) { if (isEmpty(estrutura)) { // Verifica se a estrutura está vazia printf("Erro: Estrutura vazia!\n"); exit(1); } return estrutura->items[estrutura->inicio]; }
int main() { Estrutura estrutura; initializeEstrutura(&estrutura); // Inicializa a estrutura // Testando as operações da estrutura insert(&estrutura, 10); insert(&estrutura, 20);
insert(&estrutura, 30);
printf("Elemento no inicio da estrutura: %d\n", peek(&estrutura));
printf("Removendo: %d\n", extract(&estrutura)); printf("Removendo: %d\n", extract(&estrutura)); printf("Removendo: %d\n", extract(&estrutura));
printf("A estrutura está vazia? %s\n", isEmpty(&estrutura) ? "Sim" : "Não");
return 0; }
O código apresentado é condizente com a estrutura de dados: