Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Implementação lista sequencial
- #include "lista_sequencial.h"
- #include <stdio.h>
- #define MAX 100
- void iniciarLista(struct lista_seq *lista){
- lista->tamanho = 0;
- }
- int vaziaLista(struct lista_seq *lista){
- if(lista->tamanho == 0){
- return 1;
- }else{
- return 0;
- }
- }
- int cheiaLista(struct lista_seq *lista){
- if(lista->tamanho == MAX){
- return 1;
- }else{
- return 0;
- }
- }
- int tamanhoLista(struct lista_seq *lista){
- return lista->tamanho;
- }
- int elementoListaValor(struct lista_seq *lista, int valor){
- int count;
- for(count = 0; count < lista->tamanho; count++){
- if(lista->array[count] == valor){
- return count + 1;
- }
- }
- return 0;
- }
- int elementoListaPosicao(struct lista_seq *lista, int posicao){
- if((posicao > lista->tamanho) || posicao > MAX){
- return 0;
- }else{
- return lista->array[posicao - 1];
- }
- }
- int insereListaPosicao(struct lista_seq *lista, int posicao, int valor){
- int count, tamanho;
- tamanho = lista->tamanho;
- if(cheiaLista(lista) || posicao - 1 > tamanho){
- return 0;
- }else{
- for(count = tamanho; count >= posicao; count--){
- lista->array[count] = lista->array[count - 1];
- }
- lista->array[posicao - 1] = valor;
- ++(lista->tamanho);
- return 1;
- }
- }
- int insereLista(struct lista_seq *lista, int valor){
- if(cheiaLista(lista)){
- return 0;
- }else{
- lista->array[ lista->tamanho ] = valor;
- ++(lista->tamanho);
- return 1;
- }
- }
- int removerLista(struct lista_seq *lista, int posicao){
- int count;
- if(vaziaLista(lista) || posicao > lista->tamanho || posicao < 1){
- return 0;
- }else{
- for(count = posicao - 1; count < lista->tamanho - 1; count++){
- lista->array[count] = lista->array[count + 1];
- }
- --(lista->tamanho);
- return 1;
- }
- }
- int mostrarLista(struct lista_seq *lista){
- int count;
- if(vaziaLista(lista)){
- return 0;
- }
- printf("Tamanho da lista: %d elemento(s)\n", lista->tamanho);
- printf("--------------------------------\n");
- for(count = 0; count < lista->tamanho; count++){
- printf("\n\tINDICE: %d\n", count + 1);
- printf("\tVALOR: %d\n", lista->array[count]);
- }
- printf("\n");
- return 1;
- }
- int concatenaLista(struct lista_seq *lista, struct lista_seq *lista2, struct lista_seq *novalista){
- int count;
- if(vaziaLista(lista) || vaziaLista(lista2)){
- return 0;
- }
- for(count = 0; count < lista->tamanho; count++){
- insereLista(novalista, lista->array[count]);
- }
- for(count = lista->tamanho; count < (lista2->tamanho + lista->tamanho); count++){
- insereLista(novalista, lista2->array[count - lista->tamanho]);
- }
- mostrarLista(novalista);
- return 1;
- }
- int dividirLista(struct lista_seq *lista, struct lista_seq *lista_par, struct lista_seq *lista_impar){
- int count;
- if(vaziaLista(lista)){
- return 0;
- }
- for(count = 0; count < lista->tamanho; count++){
- if(lista->array[count]%2 == 0){
- insereLista(lista_par, lista->array[count]);
- }else{
- insereLista(lista_impar, lista->array[count]);
- }
- }
- mostrarLista(lista_par);
- mostrarLista(lista_impar);
- return 1;
- }
- int modificarElemento(struct lista_seq *lista, int posicao, int valor){
- if((posicao > lista->tamanho) || (posicao > MAX) || (posicao <= 0)){
- return 0;
- }
- lista->array[posicao - 1] = valor;
- return 1;
- }
- int removerValor(struct lista_seq *lista, int valor){
- int count;
- if(vaziaLista(lista)){
- return 0;
- }
- for(count = 0; count < lista->tamanho; count++){
- if(lista->array[count] == valor){
- removerLista(lista, count + 1);
- }
- }
- return 1;
- }
- int main(){
- struct lista_seq exemplo;
- struct lista_seq exemplo2;
- struct lista_seq novalista;
- struct lista_seq lista_par;
- struct lista_seq lista_impar;
- //Inicializando listas
- iniciarLista(&exemplo);
- iniciarLista(&exemplo2);
- iniciarLista(&novalista);
- iniciarLista(&lista_par);
- iniciarLista(&lista_impar);
- printf("%d\n", vaziaLista(&exemplo2));
- //Inserindo elementos da lista exemplo2
- insereListaPosicao(&exemplo2, 1, 5);
- insereListaPosicao(&exemplo2, 1, 4);
- insereListaPosicao(&exemplo2, 1, 3);
- insereListaPosicao(&exemplo2, 2, 10);
- insereListaPosicao(&exemplo2, 1, 1);
- insereListaPosicao(&exemplo2, 3, 1234);
- //Teste da função tamanhoLista e vaziaLista
- printf("%d\n", tamanhoLista(&exemplo2));
- printf("%d\n", vaziaLista(&exemplo2));
- mostrarLista(&exemplo2);
- //Inserindo elementos da lista exemplo
- insereListaPosicao(&exemplo, 1, 10);
- insereListaPosicao(&exemplo, 1, 1000);
- insereListaPosicao(&exemplo, 1, 35);
- insereListaPosicao(&exemplo, 1, 40);
- insereListaPosicao(&exemplo, 1, 50);
- mostrarLista(&exemplo);
- //Testando as funções de remoção
- removerValor(&exemplo2, 10);
- removerLista(&exemplo2, 2);
- mostrarLista(&exemplo2);
- //Teste da função concatenarLista e dividirLista
- concatenaLista(&exemplo2, &exemplo, &novalista);
- dividirLista(&novalista, &lista_par, &lista_impar);
- //Mostrar que elemento se encontra na posição 4 na novalista
- printf("%d\n", elementoListaPosicao(&novalista, 3));
- //Mostrar em que posição de encontra o elemento 50 na novalista
- printf("%d\n", elementoListaValor(&novalista, 1000));
- //Teste da função modificarElemento
- modificarElemento(&novalista, 8, 2000);
- mostrarLista(&novalista);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment