Ir ao conteúdo
  • Cadastre-se

paulopimenta6

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Tudo que paulopimenta6 postou

  1. @GabrielSennaMs obrigado pela ajuda! Como ponteiro fica mais fácil visualizar a criação dos nós. Mas eu fico ainda com uma dúvida, dentro do "while" current e current.next são atualizados e não afetam this.head o qual só é modificado quando current.next recebe node. Por quem current e current.next dentro do while não afetam this.head?
  2. 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. LinkedList.zip
  3. 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.
  4. Olá Pessoal, Estou estudando métodos de ordenamento usando o método do quicksort e na implementação que eu fiz coloquei alguns prints para identificar alguns pontos da iteração no ordenamento de um vetor. O meu problema é que numa dada iteração, quando o vetor já está todo ordenado, ainda há passagens no interior dos laços da função. Eu tentei identificar o que poderia ter dado errado, mas ainda assim não consegui identificar. Vou enviar o código e espero que possam me ajudar! #include <stdlib.h> #include <stdio.h> void quick_sort(int array[], int primeiro, int ultimo){ int i, temp, baixo, alto, separador; baixo=primeiro; alto=ultimo; separador=array[(alto+baixo)/2]; do{ printf("Passei aqui... \n"); for(i=0; i<5; i++){ printf("%d ", array[i]); } printf("\n"); while(array[baixo]<separador){ baixo++; } while(array[alto]>separador){ alto--; } if(baixo<=alto){ temp=array[baixo]; array[baixo++]=array[alto]; array[alto--]=temp; } printf("\nwhile(%d<=%d)\n", baixo, alto); }while (baixo<=alto); printf("\n(%d<%d)\n", primeiro, alto); if((primeiro<alto)){ printf("Entre no condicional primeiro<alto \n"); quick_sort(array, primeiro, alto); } printf("\n(%d<%d)\n", baixo, ultimo); if((baixo<ultimo)){ printf("Entre no condicional baixo<ultimo \n"); quick_sort(array, baixo, ultimo); } } int main(){ //int valores[100], i; //for(i=0; i<100; i++){ // valores[i]=rand()%100; // } int valores[5]={5,3,4,1,2}, i; quick_sort(valores, 0, 4); for(i=0; i<5; i++){ printf("%d ", valores[i]); } } pegando os prints do terminal as saídas são essas: Passei aqui... 5 3 4 1 2 while(1<=3) Passei aqui... 2 3 4 1 5 while(3<=2) (0<2) Entre no condicional primeiro<alto Passei aqui... 2 3 1 4 5 while(2<=1) (0<1) Entre no condicional primeiro<alto Passei aqui... 2 1 3 4 5 while(1<=0) (0<0) (1<1) (2<2) (3<4) Entre no condicional baixo<ultimo Passei aqui... 1 2 3 4 5 while(4<=2) (3<2) (4<4) 1 2 3 4 5 E fica a dúvida por que logo quando houve a ordenação a função não parou e continuou as iterações. Espero que possam me ajudar! Um abraço a todos!
  5. 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...