Jump to content
Sr.Hozuki

Qual o melhor livro para aprender Listas?

Recommended Posts

Estou estudando listas em C, e sinceramente, estou achando a coisa mais difícil do mundo porque não sei bem a aplicação disso. Alguém sabe um livro ou pode ser até um pdf que mostre como funciona uma lista? Tipo, dando os conceitos e tal, mas mostrando um código que de para entender bem, porque nos livros que vi dão apenas o conceito e o cara que se vire para usar aquela coisa de tipo abstrato de dados, estou bem confuso D: Agradeço a quem ajudar

Share this post


Link to post
Share on other sites

Sim, porém achei um pouco complicado, dai acho que podia ser a didatica do livro.

Pode ser livro online também, tendo ótimos exemplos para demonstrar em C está bom demais :D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By leo99i
      Estou criando um projeto da faculdade e estou com dificuldade em realizar o item 5 do menu do meu programa que no caso é para ordenar os vetores.
      Meu código está assim: Se alguém puder me ajudar a resolver o item 5 eu agradeço.
      #include <stdio.h>
      #include <stdlib.h>
      #include <locale.h>
      #include <time.h>
      #define TAM 8
      int main()
      {
          setlocale(LC_ALL, "Portuguese");
          int menu, vetor1[TAM], vetor2[TAM], i, j, volta = 0, escolha, posicao, valor, acc=0;

          do
              {
                  printf("=========CALCULADORA DE VETORES========= \n");
                  printf("             MENU DE OPÇÕES \n");
                  printf("1 - Gerar vetores \n");
                  printf("2 - Imprimir vetores \n");
                  printf("3 - Eliminar elemento do vetor \n");
                  printf("4 - Pesquisar elemento nos vetores\n");
                  printf("5 - Ordenar os vetores\n");
                  printf("6 - Calcular operações matemáticas\n");
                  printf("7 - Calcular métodos estatísticos \n");
                  printf("8 - Total de elementos válidos \n");
                  printf("9 - Sair \n");
                  printf("==========================================\n");
                  printf("Escolha a opção: ");
                  scanf("%i", &menu);
                  srand(time(NULL));

                  switch(menu)
                      {
                          case 1:
                              for(i=0; i < TAM; i++){
                                  vetor1 = rand()%500+1;
                                  vetor2 = rand()%500+1;
                              }
                              break;
                          case 2:
                              printf("Vetor 1: \n");
                              printf("[%i - ", vetor1[0]);
                              for(i=1; i< 7; i++){
                              printf("%i - ", vetor1);
                              }
                              printf(" %i]\n", vetor1[7]);
                              printf("\n\n");
                              printf("Vetor 2: \n");
                              printf("[%i - ", vetor2[0]);
                              for(i=1; i< 7; i++){
                              printf("%i - ", vetor2);
                              }
                              printf(" %i]\n", vetor2[7]);
                              printf("\n\n");
                              break;
                          case 3:
                              do{
                                      printf(" Escolha de vetor \n");
                                      printf("Digite 1 para o Vetor 1 \n");
                                      printf("Digite 2 para o Vetor 2 \n");
                                      printf("\nEscolha a opção: ");
                                      scanf("%i", &escolha);
                              }
                              while(escolha <= 0 || escolha >= 3);
                              if(escolha == 1){
                                  printf("Escolha a posição do vetor: ");
                                  scanf("%i", &posicao);
                                  if((vetor1[posicao] == 0) || (posicao < 0 || posicao >= 7)){
                                          printf("\nERRO!!!\n");
                                  }
                                  else{
                                          vetor1[posicao] = 0;
                                          printf("\nOperação realizada com sucesso!\n");
                                          }
                                      }
                                      else{
                                              printf("Escolha a posição do vetor: ");
                                              scanf("%i", &posicao);
                                      if((vetor2[posicao] == 0) || (posicao < 0 || posicao >= 7)){
                                              printf("\nERRO!!!\n");
                                      }
                                      else{
                                              vetor2[posicao] = 0;
                                              printf("\nOperação realizada com sucesso!\n");
                                              }
                                          }
                                      break;
                          case 4:
                                  scanf("%i",&valor);
                                  acc = 0;
                                  for(i=0;i<2;i++)
                                      {
                                          for(j=0;j<7;j++)
                                              {
                                                  if(i==0)
                                                      {
                                                          if(valor == vetor1[j])
                                                              {
                                                                  acc = acc + 1;
                                                                  printf("\nO valor %i está localizado na posição %i do Vetor 1\n", valor,j+1);
                                                              }
                                                      }
                                                  else
                                                      {
                                                          if(valor == vetor2[j])
                                                              {
                                                                  acc= acc + 1;
                                                                  printf("\nO valor %i está localizado na posição %i do Vetor 2\n",valor,j+1);
                                                              }
                                                      }
                                              }
                                      }
                                  if(acc == 0)
                                      {
                                          printf("\nNão foi encontrado o %i em nenhuma dos veteores\n", valor);
                                      }
                                      break;
                          case 5:
                          case 9:
                              exit(0);
                                  }

              }
          while(volta==0);

      return 0;
      }
    • By joaquim_bezzera
      Estou fazendo um trabalho para a faculdade criando uma estrutura de cadastro de uma corrida. Já consegui fazer grande parte mas não consigo resolver esses pontos. Alguém saberia resolver?

    • By sudden
      Olá alguém que esteja lendo isso, tem dias que eu não consigo rodar esse algoritmo certo, não sei mais o que eu faço, nao sou nenhum desenvolvedor nem nada, tô no 1 semestre
      #include <stdio.h> #include <stdlib.h> //Inicio Structs struct telefones{ char numfixo[15]; char celular[16]; }; struct clientes{ double cpf; int codcliente; struct telefones t; char nome[30]; char sexo; }; struct produtos{ char nomeprod[20]; int codigoproduto; float valor; char modelo [10]; }; struct carrinhos{ struct clientes cliente[5]; struct produtos produto[5]; int quantidade; float subtotal; float desconto; // porcentagem float total; }; struct modelos{ char marca [20]; char modelo [20]; }; /////Fim Structs //Inicio Fun��o void cadastrarCliente(struct clientes cliente[50], int cont); void mostrarCliente(struct clientes cliente[50]); void mostraMenuPrincipal(); void mostrarProduto(struct produtos produto[50]); void cadastrarProduto(struct produtos produto[50],int contp); void efetuarCompra(struct carrinhos carrinho[50],struct clientes cliente[3],struct produtos produto[10]); void ordenarCliente(struct clientes cliente[50]); // Inicio Main void main(int argc, char *argv[]) { int resposta,contp=0,cont=0,voltar=0; //cont e o contador do cliente, contp e do produto. struct produtos produto[50]; struct clientes cliente[50]; struct carrinhos carrinho[50]; struct modelos modelo[50]; ////////////inicio declarando structs para ele ter oque mostrar//////////////////////////////////// ///////////////////Ira direcionar o usuario no menu /////////////////////// do{ mostraMenuPrincipal(); scanf("%d", &resposta); switch(resposta) { case 1: cadastrarCliente(cliente, cont); cont=cont+1; //agora a proxima vez que for cadastrar um cliente, o indice vai ser um apos o anterior. system("pause"); break; case 2: cadastrarProduto(produto,contp); contp=contp+1; system("pause"); break; case 3: mostrarCliente(cliente); system("pause"); break; case 4: mostrarProduto(produto); system("pause"); break; case 5: efetuarCompra(carrinho,cliente,produto); system("pause"); break; case 6: ordenarCliente(cliente); contp=contp+1; break; default: exit(0); } }while(1); } ////////////////////////print menu /////////////////////////////////////////// void mostraMenuPrincipal(){ system("cls"); printf("==========================================================\n"); printf("1 - CADASTRAR CLIENTE\n"); printf("2 - CADASTRAR PRODUTO\n"); printf("3 - LISTA DE CLIENTES\n"); printf("4 - LISTA DE PRODUTOS\n"); printf("5 - EFETUAR VENDA\n"); printf("0 - SAIR DO MERCADO DIGITAL\n"); printf("==========================================================\n"); printf("Digite sua opcao: "); } ////////////////////////print cadastrar cliente /////////////////////////////////////////// void cadastrarCliente(struct clientes cliente[50],int cont){ system("cls"); printf("=======================================================\n"); printf("-----------------CADASTRAR CLIENTE: %d-----------------\n", cont+1); printf("=======================================================\n\n\n"); printf("AVISO! Digite o CPF da forma original com ponto e tra�os\n\n"); printf("CPF: "); fflush(stdin); //limpa o buffer scanf("%f",&cliente[cont].cpf); printf("NUM FIXO: "); fflush(stdin); scanf("%d", &cliente[cont].t.numfixo); printf("CELULAR: "); fflush(stdin); scanf("%d", &cliente[cont].t.celular); printf("NOME: "); fflush(stdin); gets(cliente[cont].nome); printf("DATA NASCIMENTO: "); fflush(stdin); cliente[cont].codcliente=cliente[cont].cpf/100000; printf("\n==========================================================\n"); printf("O CODIGO DO CLIENTE GERADO E: %d",&cliente[cont].codcliente); printf("\n"); //Printa o cliente que foi cadastrado printf("\nCPF: %d",cliente[cont].cpf); printf("\nNUM FIXO: %d",cliente[cont].t.numfixo); printf("\nCELULAR: %d",cliente[cont].t.celular); printf("\nNOME: %s",cliente[cont].nome); printf("\n=================================================\n"); } ////////////////////////print listar cliente /////////////////////////////////////////// void mostrarCliente(struct clientes cliente[50]){ int repet=0; printf("================================================\n"); printf("----------------- LISTAR CLIENTE -----------------\n"); printf("================================================\n"); for(repet=0;repet<=2;repet++){ printf("\nCPF: %d",cliente[repet].cpf); printf("\nNUM FIXO: %d",cliente[repet].t.numfixo); printf("\nCELULAR: %d",cliente[repet].t.celular); printf("\nNOME: %s",cliente[repet].nome); printf("\nCODIGO DO CLIENTE: %d\n",cliente[repet].codcliente); } } ////////////////////////print cadastrar produto /////////////////////////////////////////// void cadastrarProduto(struct produtos produto[50],int contp){ printf("=================================================\n"); printf("-----------------CADASTRAR PRODUTO: %d-----------------\n", contp+1); printf("=================================================\n"); printf("CODIGO DO PRODUTO: \n"); scanf("%d",&produto[contp].codigoproduto); printf("\nNOME DO PRODUTO: "); fflush(stdin); gets(produto[contp].nomeprod); printf("\nMARCA: "); (stdin); printf("\nMODELO: "); fflush(stdin); printf("\nVALOR: "); fflush(stdin); scanf("%f",&produto[contp].valor); //agora printar produto printf("\nCODIGO DO PRODUTO: %d\n",produto[contp].codigoproduto); printf("\nNOME DO PRODUTO: %ss\n",produto[contp].nomeprod); printf("\nVALOR DO PRODUTO: R$ %0.2f\n",produto[contp].valor); printf("\nMODELO DO PRODUTO: %s", produto[contp].modelo); } ////////////////////////print listar produtos /////////////////////////////////////////// void mostrarProduto(struct produtos produto[50]){ int repet; printf("================================================\n"); printf("----------------- LISTAR PRODUTO -----------------\n"); printf("================================================\n"); for(repet=0;repet<=9;repet++){ printf("\n\nCODIGO DO PRODUTO: %d",produto[repet].codigoproduto); printf("\nNOME DO PRODUTO: %s",produto[repet].nomeprod);543; printf("\nVALOR DO PRODUTO: R$ %0.2f\n\n",produto[repet].valor); } } //pode ser de haja erro na compra void efetuarCompra(struct carrinhos carrinho[50],struct clientes cliente[3],struct produtos produto[10]){ int buscacliente,x; int buscaprod,buscaprod2,buscaprod3; int quantidade,quantidade2,quantidade3; float total,total2,total3; float totalum,todototal,cupom,desc; float fimtotal; mostrarCliente(cliente); printf("\n\nDigite o codigo do cliente: "); scanf("%d",&buscacliente); for(x=0;x<=50;x++){ int y; if(cliente[x].codcliente==buscacliente){ y=1; } if(y==1){ buscacliente=x; y=51; } } system("cls"); mostrarProduto(produto); printf("\ncarrinho do cliente %s",cliente[buscacliente].nome); printf("\ndigite o codigo do produto 1: "); scanf("%d",&buscaprod); for(x=0;x<=50;x++){ int y; if(produto[x].codigoproduto==buscaprod){ y=1; } if(y==1){ buscaprod=x; y=51; } } printf("\ndigite a quantidade: "); scanf("%d",&quantidade); total = quantidade * produto[buscaprod].valor; //REPETICAO///////////////////// printf("\ndigite o codigo do produto 2: "); scanf("%d",&buscaprod); for(x=0;x<=50;x++){ int y; if(produto[x].codigoproduto==buscaprod){ y=1; } if(y==1){ buscaprod=x; y=51; } } printf("\ndigite a quantidade: "); scanf("%d",&quantidade); total2 = quantidade * produto[buscaprod].valor; //REPETICAO///////////////////// printf("\ndigite o codigo do produto 3: "); scanf("%d",&buscaprod); for(x=0;x<=50;x++){ int y; if(produto[x].codigoproduto==buscaprod){ y=1; } if(y==1){ buscaprod=x; y=51; } } printf("\ndigite a quantidade: "); scanf("%d",&quantidade); total3 = quantidade * produto[buscaprod].valor; //system("pause"); printf("digite o cupom de desconto: "); scanf("%f", &cupom); todototal = total + total2 + total3; desc = todototal * (cupom / 100); fimtotal = todototal - desc; printf("Total: R$ %0.2f\n", todototal); printf("Valor do Desconto: R$ %0.2f\n", desc); printf("Valor total e R$ %0.2f\n", fimtotal); system("pause"); } void ordenarCliente(struct clientes cliente[50]){ int i,b; int codigotemp,cpftemp,fixotemp,celulartemp,datanasctemp; char nometemp; printf("Organizando lista...\n"); for(i=0;i<=3;i++){ for(b=0;b<=3;b++){ if(cliente[b].codcliente>cliente[b+1].codcliente){ //valores para variaveis temporarias printf("transferindo valores para variaveis temporarias...\n"); codigotemp=cliente[b].codcliente; fixotemp=cliente[b].t.numfixo; celulartemp=cliente[b].t.celular; //strcpy(nometemp , cliente[b].nome); nometemp=cliente[b].nome; cpftemp=cliente[b].cpf; printf("variaveis temporarias transferidas.\n"); //fim da transferencia de valores para variaveis temporarias //fazer os valores de indice b receber o valor do indice da struct do indice seguinte printf("cliente %d recebendo valores do cliente... %d\n",b,b+1); cliente[b].codcliente=cliente[b+1].codcliente; strcpy(cliente[b].nome , cliente[b+1].nome); cliente[b].cpf=cliente[b+1].cpf; printf("cliente %d recebeu valores do cliente %d\n",b,b+1); //fim da transferencia de valores do segundo para o primeiro indice //inicio dE transferencia de valores do primeiro indice para o segundo indice printf("cliente %d recebendo valores das variaveis temporarias...\n",b+1); cliente[b+1].codcliente=codigotemp; printf("recebeu codigo do cliente.\n"); //cliente[b+1].nome=nometemp; strcpy(cliente[b+1].nome,nometemp); //sprintf(cliente[b+1].nome,nometemp); printf("recebeu nome\n"); cliente[b+1].cpf=cpftemp; printf("recebeu cpf\n"); printf("cliente %d recebeu valores das variaveis temporarias\n",b+1); printf("---- ---- ---- ---- "); } } } printf("Operacao concluida.\n"); }  
    • By eduardobraz
      //Programa 26
       
      #include <stdio.h>
       
      int main(){
          
          int n, j, i, soma, aux;
          
          scanf("%d", &n);
          
          aux =1;
          
          for(i = 1; i <= aux; i++) {
              soma = 0;
              printf("%d = ", n);
              
              for(j = 1; j < n; j++){
                  if (n % j == 0){
                      soma += j;
                      printf("%d + ", j);
                  }
              }
              if(n == soma){
                  printf("= %d (NUMERO PERFEITO)\n", soma);
              }
              else{
                  printf("= %d (NUMERO NAO E PERFEITO)\n", soma);
              }
          }
          return 0;
      }
       
      Gostaria ajuda de vocês para remover um "+" antes do "=" 
       
      Exemplo 
      Coloco 6 na entrada.
       
      E na saída deveria sair 1 + 2 + 3 = 6
      mais sai 1 + 2 + 3 + = 6
    • By Motta
      As 10 principais linguagens de programação do mercado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.