Pesquisar na Comunidade
Mostrando resultados para as tags ''lista encadeada''.
Encontrado 5 registros
-
Lista simplesmente encadeada tendo como argumento outra estrutura com dados
Fah postou um tópico no fórum C/C++
Boa Noite Pessoal! Estou com dificuldade em implementar um exercício de lista simplesmente encadeada. Nele pede para criar uma estrutura com os dados de um aluno (matricula, nome e media), e outra para ser a lista (com a estrutura com os dados do aluno e um no com as informações do próximo nó). Uma das opções é para inserir os dados de um novo aluno em ordem crescente de matricula. O código está dando erro. Vocês conseguem me dizer onde estou errando? Vejam meu código: #include<stdio.h> #include<stdlib.h> #include<string.h> struct aluno{ int matricula; char nome[100]; float media; }; typedef struct aluno Aluno; struct no{ Aluno* dados; struct no* prox; }; typedef struct no No; No* cria(No* l){ No* p=(No*)malloc(sizeof(No)); p->dados=NULL; return l; } No* ins_ordenado(No* l,int mat,char* nome,float nota){ Aluno* Al=(Aluno*)malloc(sizeof(Aluno)); No* novo=(No*)malloc(sizeof(No)); int i=0; Al->matricula=mat; while(nome!='\0'){ Al->nome=nome; i++; } Al->nome=NULL; Al->media=nota; novo->dados=Al; No*p=l; No*aux=NULL; if(l==NULL){ novo->prox=l; return novo; } while(p!=NULL&&p->dados->matricula<Al->matricula){ aux=p; p=p->prox; } novo->prox=aux->prox; aux->prox=novo; if(p==NULL){ novo->prox=NULL; } return l; } void imprime(No* l){ No* p; printf("turma 1:\n"); for(p=l;p!=NULL;p->prox){ printf("Matricula: %d\t Nome: %s Nota:%f\n",p->dados->matricula,p->dados->nome,p->dados->media); } printf("\n"); } int vazia(No* l){ return(l==NULL); } int main(){ No* l1=cria(l1); l1=ins_ordenado(l1,1,"Maria",5); printf("vazia? %d",vazia(l1)); //imprime(l1); return 0; } Desde já, Obrigada!- 2 respostas
-
- simples
- lista encadeada
-
(e mais 1 )
Tags:
-
Pessoal, boa tarde! Estou analisando o código do Ziviani de lista encadeada. Alguém sabe me explicar o porque da necessidade de se usar o TipoCelula no início da estrutura e no final? Pergunto pois, se eu tiro do início ele da o erro "error: conflicting declaration 'typedef struct TipoCelula TipoCelula" e se eu tiro do final ele funciona perfeitamente. Ainda não conseguir pegar a ideia. Alguém poderia me auxiliar? typedef struct { int Chave; /* outros componentes */ } TipoItem; typedef struct TipoCelula *TipoApontador; typedef struct TipoCelula { TipoItem Item; TipoApontador Prox; } TipoCelula; typedef struct { TipoApontador Primeiro, Ultimo; } TipoLista;
- 3 respostas
-
- lista encadeada
- linguagem c
- (e mais 1 )
-
1- O comando typedef pode ser utilizado para criar novos comandos, ou simplesmente novas formas de escrever determinados comandos em linguagem C. Por exemplo, toda vez que você quiser criar uma variável do tipo struct declarado acima, terá que escrever o nome completo do tipo, isto é struct lista. Usando o comando typedef, defina um tipo alternativo, chamado Lista, que possa ser usado em lugar de struct lista. 2- Usando o tipo Lista que você criou na questão 3, declare uma variável chamada myList que possa ser utilizada para construir uma lista encadeada. 3- (0,5) Usando o tipo Lista que você criou na questão 3, declare uma variável chamada novo que possa ser utilizada para criar um novo elemento para a lista declarada na questão 4. 4- Escreva uma linha de código que aloque espaço na memória para a variável novo declarada na questão 5, de forma que a variável possa ser utilizada para inserir um novo elemento na lista myList declarada na questão 4. 5 -Considerando a variável myList declarada na questão 4 e a variável novo declarada na questão 5 e alocada na questão 6, atribua os valores 1 para o atributo id e 9.1 para o atributo valor e insira-a na lista myList. 6- O trecho de código apresentado a seguir, refere-se a uma função que receberá como parâmetro um ponteiro para uma lista do tipo Lista e deverá calcular e retornar a média dos valores existentes na lista. Escreva o corpo da função.
-
- lista encadeada
- lista
- (e mais 7 )
-
armazenar uma palavra em uma lista encadeada
alexkbw postou um tópico no fórum Docker, Kubernets e outros ambientes
ola, preciso de ajuda estou aprendendo C++ e nao consigo criar uma lista encadeada que armazene palavras segue o codigo: // listaEncadeada.cpp : Este arquivo contém a função 'main'. A execução do programa começa e termina ali. #include "pch.h" #include "conio.h" #include "string" #include<iostream> using namespace std; struct lista { char c; int n; struct lista*p; }; struct lista * inserirn(char,int); struct lista * prim; void inserir() { char c; int n; printf("\ninforme uma cor :"); scanf_s("%s", &c); printf("\ninforme um numero:"); scanf_s("%d", &n); inserirn(c,n); } struct lista * inserirn(char c,int n) { struct lista *novo, *aux; novo = (struct lista*)malloc(sizeof(struct lista)); if (novo!=NULL)//caso nao aja memoria { novo->n= n; novo->c = c; novo->p = NULL; if (prim==NULL) { prim = novo; } else { aux = prim; while (aux->p != NULL) { aux = aux->p; } aux->p = novo; } } return novo; } int main() { prim = NULL; inserir(); inserir(); inserir(); _getch(); }-
- lista encadeada
- c++
-
(e mais 1 )
Tags:
-
Boa tarde gostaria de entender porque o codigo abaixo não funciona corretamente, alguem poderia me informar ?? LINK para por para rodar : https://repl.it/@JulianaMaria/Questao-1 /* Escrever um Pseudocódigo de inserção em uma lista encadeada ordenada. */ #include <stdio.h> #include <stdlib.h> typedef struct Dados { int numero; struct Dados * proximo; }No; void imprime (No * lista){ printf("\n Lista = "); while(lista->proximo != NULL){ printf(" %d ",lista->numero); lista = lista->proximo; } printf("\n"); } No * inserir_ordenado(int valor, No * inicio_lista){ No * percorrer_lista, * novo_no, *l; percorrer_lista = (No*)malloc(sizeof(No)); novo_no = (No*)malloc(sizeof(No)); percorrer_lista = inicio_lista; novo_no->numero = valor; int cont = 0; while((percorrer_lista->numero < valor)&&(percorrer_lista->proximo != NULL)){ percorrer_lista = percorrer_lista->proximo; cont++; } //inserir fim if((percorrer_lista->proximo == NULL)&&(cont != 0)){ percorrer_lista->proximo = novo_no; novo_no->proximo = NULL; }else{ //inserir inicio if(cont == 0){ novo_no->proximo = percorrer_lista; } //inserir meio else{ novo_no->proximo = percorrer_lista->proximo; percorrer_lista->proximo = novo_no; } } return inicio_lista; } int main (){ No * lista, * pt; int valor,op = 1; pt = lista; lista->numero = 10; lista->proximo = NULL; while(op == 1){ printf("\n Digite valor para inserir na lista : "); scanf("%d",&valor); lista = inserir_ordenado(valor,pt); printf("\n Deseja inserir outro valor ? [Digite 1 para sim e outro valor para nao] = "); scanf("%d",&op); } imprime(pt); }
-
- inserção ordenada
- inserção
- (e mais 3 )