Você está aqui: C ::: Estruturas de Dados ::: Lista Ligada Simples |
Como inserir nós no início de uma lista singularmente ligada em CQuantidade de visualizações: 9095 vezes |
Esta dica mostra como inserir nós no início de uma lista singularmente ligada. A estrutura usada para representar cada nó é a seguinte:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- struct No{ int valor; struct No *proximo; }; Note que cada nó contém apenas um valor inteiro e um ponteiro para o próximo nó. Ao analisar o código você perceberá que tanto a inserção no início quanto a exibição dos nós são feitas usando funções. Isso permitirá o reaproveitamento deste código em suas próprias implementações. Vamos ao código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // estrutura Nó struct No{ int valor; struct No *proximo; }; // fim da estrutura Nó // função que permite exibir os valores de // todos os nós da lista void exibir(struct No *n){ if(n != NULL){ do{ printf("%d\n", n->valor); n = n->proximo; }while(n != NULL); } else printf("A lista esta vazia\n\n"); } // função que permite inserir nós no // início da lista. // veja que a função recebe o valor a ser // armazenado em cada nó e um ponteiro para o // início da lista. A função retorna um // ponteiro para o início da lista struct No *inserir_inicio(struct No *n, int v){ struct No *novo; // verifica se a lista está vazia if(n == NULL){ // reserva memória para o novo nó n = (struct No*)malloc(sizeof(struct No)); n->valor = v; // é o primeiro nó...não deve apontar para // lugar nenhum n->proximo = NULL; return n; } else{ // não está vazia....vamos inserir o nó no início // vamos criar um novo nó agora novo = (struct No*)malloc(sizeof(struct No)); // atribui o valor do nó novo->valor = v; // define o inicio da lista como campo proximo // do novo nó novo->proximo = n; return novo; } } int main(int argc, char *argv[]) { // declara a lista struct No *inicio = NULL; // vamos inserir quatro valores no início // da lista inicio = inserir_inicio(inicio, 45); inicio = inserir_inicio(inicio, 3); inicio = inserir_inicio(inicio, 98); inicio = inserir_inicio(inicio, 47); // vamos exibir o resultado exibir(inicio); system("pause"); return 0; } |
Link para compartilhar na Internet ou com seus amigos: |
C ::: C para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a transposta de uma matriz em C - Curso de C para Geometria Analítica e Álgebra LinearQuantidade de visualizações: 995 vezes |
A matriz transposta de uma matriz A é a matriz AT. Tal matriz é obtida quando copiamos os elementos da matriz A para uma outra matriz (ou para ela mesma) e trocamos de posição as linhas e colunas. Dessa forma, a primeira linha da matriz A se transforma na primeira coluna da matriz transposta, a segunda linha da matriz A se transforma na segunda coluna da matriz transposta e assim por diante. Em termos de notação, podemos dizer, de forma algébrica, que: ATji = Aij Onde i representa as linhas e j representa as colunas, tanto na matriz original quanto na matriz transposta. É importante estar atento à quantidade de linhas e colunas na matriz original e na matriz transposta equivalente. Assim, se a matriz original for 3x2, a matriz transposta será 2x3. Antes de vermos o código C, dê uma olhada na seguinte matriz de duas linhas e três colunas: \[A = \left[\begin{matrix} 3 & 5 & 7 \\ 1 & 2 & 9 \end{matrix}\right] \] Sua matriz transposta correspondente é: \[A^T = \left[\begin{matrix} 3 & 1 \\ 5 & 2 \\ 7 & 9 \end{matrix}\right] \] E agora veja o código C que declara uma matriz 2x3 e gera a matriz transposta 3x2: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <locale.h> int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português // vamos declarar e construir uma matrix // 2x3 (duas linhas e três colunas int matriz[2][3] = {{3, 5, 7}, {1, 2, 9}}; int i, j; // vamos exibir os valores da matriz printf("Elementos da matriz:\n"); for(i = 0; i < 2; i++){ for(j = 0; j < 3; j++){ printf("%5d ", matriz[i][j]); } printf("\n"); } // como temos uma matriz 2x3, a transposta deverá ser // 3x2, ou seja, três linhas e duas colunas int linhas = 3; // linhas da matriz original int colunas = 2; // colunas da matriz original int transposta[linhas][colunas]; // e agora vamos preencher a matriz transposta for(i = 0; i < 2; i++){ for(j = 0; j < 3; j++){ transposta[j][i] = matriz[i][j]; } } // vamos exibir os valores da matriz transposta printf("Elementos da matriz transposta:\n"); for(i = 0; i < 3; i++){ for(j = 0; j < 2; j++){ printf("%5d ", transposta[i][j]); } printf("\n"); } printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Elementos da matriz: 3 5 7 1 2 9 Elementos da matriz transposta: 3 1 5 2 7 9 |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como comparar os primeiros n caracteres de duas strings usando a função strncmp() da linguagem CQuantidade de visualizações: 10315 vezes |
Muitas vezes precisar verificar se os primeiros n caracteres de duas strings são iguais. Para isso podemos usar a função strncmp() do header string.h. Esta função aceita dois ponteiros para as strings a serem comparadas e um inteiro especificando a quantidade dos primeiros caracteres que serão comparados. O retorno da função será o valor 0 se os n caracteres comparados forem iguais. Veja o código:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]){ char palavra1[] = "Java"; char palavra2[] = "JavaScript"; if(strncmp(palavra1, palavra2, 4) == 0) printf("Os primeiros n caracteres sao iguais"); else printf("Os primeiros n caracteres NAO sao iguais"); puts("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Os primeiros n caracteres sao iguais. |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como concatenar apenas parte de uma string à outra string usando a função strncat() da linguagem CQuantidade de visualizações: 9816 vezes |
Muitas vezes precisamos adicionar à uma string apenas alguns caracteres de outra, ou seja, não queremos concatenar as duas strings completamente; apenas parte da segunda. Para isso podemos usar a função strncat(). Veja o protótipo e explicação desta função:char *strncat(char *str1, const char *str2, size_t n); Aqui a quantidade n de caracteres da string str2 será anexada ao final da string str1. O caractere de fim de string (null character) da str1 é sobrescrito durante a operação e anexado novamente assim que os caracteres desejados da str2 sejam copiados. Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char texto[] = "Gosto muito de "; char palavra[] = "C++"; /* Na segunda sequencia de caracteres nós temos "C++", mas queremos anexar à primeira sequencia apenas "C". Veja como isso é feito */ strncat(texto, palavra, 1); // exibe o resultado puts(texto); system("pause"); return 0; } Ao executar este códigos nós teremos o seguinte resultado: Gosto muito de C |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |