Ir ao conteúdo
  • Cadastre-se

paulopimenta6

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

posts postados por paulopimenta6

  1. Estou novamente estudando estruturas de dados e resolvi usar como base um livro de estrutura de dados usado JavaScript. O código inicial de linkedList.js está assim:

     

    import {defaultEquals} from '../util/util.js';
    import { Node } from './models/linked-list-models.js';
    
    export default class linkedList{
    //Aqui ficara o construtor...
    constructor(equalsFn = defaultEquals){
        this.count = 0;
        this.head = undefined;
        this.equalsFn = equalsFn;
    }
    
    //Aqui comecam os metodos...
    push(element){
        const node = new Node(element);
        let current;        
    
        console.log(this.head);
        if (this.head == null){                     
            this.head = node;
            
        }
        else{            
            current = this.head;
            while(current.next != null){                
                current = current.next;
            }
            current.next = node;
        }
        this.count++;              
        }    
    }
    
    let a = new linkedList();
    a.push(1);
    a.push(2);
    a.push(3);
    a.push(4); 

     

    E o código da classe linked-list-models.js a qual é usada pelo método push está assim:

     

    export class Node {
    constructor(element){
        this.element = element;
        this.next = undefined;
        }
    } 

     

    E o código de util.js (não usando no momento) está assim:

     

    export function defaultEquals(a, b){
        return a === b; //exporta o valor de comparacao entre dois valores em um booleano
    }

     

    A minha dúvida é simples, pois não consigo entender como o atributo this.head é atualizado e como ele se torna uma lista encadeada, pois somente node e current/current.next são atualizados.

    Agradeço a todos desde já!

    PS: Em anexo segue um zip com os códigos e um print da saída no visual code que me deixa com bastante dúvida.

    duvida_estrutura_de_dados.png

    LinkedList.zip

  2. Estou dando os meus primeiros passos no SQL e estou com dificuldade ao montar uma query.

     

    Tenho duas tabelas e a primeira (tab1) possui o código da cidade (CodCid) e o nome da cidade (NumCid). A segunda (tab2) possui os códigos das cidades de origem e destino (CodCidOrig e CodCidDest).

     

    Como estou montando uma query grande e preciso ter o nome das cidades de destino e origem para outros processos fiz: <select NumCid as cidade_de_origem, NumCid as cidade de destino from tab1 inner join tab2 on CodCid in (CodCidOrig, CodCidDest)>

    Usando esta query cria-se uma coluna em que a primeira linha são duas cidades iguais de origem, em seguida com duas cidades iguais de destino e assim por diante, tendo o mesmo padrão (duas origens iguais e duas de destino iguais).

     

    O banco é relacional então CodCid é igual a CodCidOrig e CodCidDest.

  3. Olá pessoal,

     

    Estou estudando linguagem C e fiquei com dúvida com relação a ponteiros e estruturas e isso gerou um erro de segmentação em meu código. Criei uma função que recebe um estrutura e um valor constante, verifica se a estrutura está vazia e faz a inserção do valor constante em uma das variáveis e posteriormente cria um nó. O problema é que só consigo imprirmir o valor da variável inteira dentro da função, enquanto que na função "main" aparece o erro de segmentação. Abaixo segue o código:

     

    #include <stdlib.h>
    #include <stdio.h>
    
    struct Lista *insere_final(struct Lista *n, int x); //prototipo da funcao
    
    struct Lista{
        int valor;
        struct Lista *proximo; //ponteiro para a proxima entrada da lista
                               //uso de recursividade. Uma struct dentro de outra
    };
    
    int main(){
        struct Lista *inicio;
        insere_final(inicio, 10);
    
        printf("O valor fora da funcao de inicio->valor e: %d \n", inicio->valor);
    
        return 0;
    }
    
    struct Lista *insere_final(struct Lista *n, int x){
    struct Lista *novo=(struct Lista *)malloc(sizeof(struct Lista)); //alocou memoria dinamicamente para a lista
    novo->valor=x;
    if(n==NULL){//lista nao esta vazia
        printf("n esta vazio! \n");
        novo->proximo=NULL;
        printf("1 - O valor dentro da funcao de novo->inicio: %d \n", novo->valor);
        return novo; //novo no sera o inicio da lista
    }
    else{//lista nao esta vazia-vamos ao final para inserir o no
        struct Lista *temp=n; //criando referencia ao primeiro no
        while(temp->proximo!=NULL){//e preciso ir ao ultimo no
            temp=temp->proximo;
        }
        novo->proximo=NULL;
        temp->proximo=novo;//o ultimo no apontara para o novo no
        printf("Entrou em else e esta verificando temp \n");
        return n;
    }
    
    }


    Desde já agradeço a todos que possam me ajudar!

     

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!