00:00 - Listas - apresentação - info 00:53 - Listas - explicação visual - info 03:23 - Estrutura - definição - info 05:48 - Lista - criar - code 08:45 - Typedef - info code 09:40 - Lista - info 10:28 - Lista vazia - criar - code 11:52 - Inserir elemento na lista - info 12:18 - funcao para criar o nó - code 13:25 - malloc - code 14:24 - criar_novo() - info 15:15 - inserir nó no inicio - info 15:24 - inserir nó no inicio - info 18:48 - se lista vazia - info 19:54 - se lista vazia - code 24:20 - função imprime - code 25:12 - regra para imprimir - info 26:40 - imprimir - code 28:39 - inserir elemento - code 29:30 - teste ok - run 29:36 - teste - info 30:15 - teste ok - run 30:35 - teste - info 31:20 - finalização 31:48 - fim
Melhor explicação que achei entre os 300 vídeos sobre o assunto. É um assunto muito difícil, mas por quê? São muitas informações. Para aprendermos, devemos ver e aprender por parte, início, meio e fim. Valeu cara, ótimo vídeo
Tá aí uma matéria q n entrava de jeito nenhum na minha cabeça, nem com o professor da facul, nem com outros videos, nem nd, aí vem o vídeo mais "simples" e abre minha mente.. melhor impossível, fica meu like!
Melhor vídeo disparado sobre o assunto! Parabéns ao instrutor, as explicações estão muito próximas de quem está com dificuldade para entender o assunto! Muito obrigado!
mano voce acabou de salvar um futuro engenheiro de controle e automação serio o que voce precisar que estiver no meu alcance eu tentarei ajudar, esse video me salvou muito pra entender de verdade a unica materia que nao entrava na minha cabeça desse semestre valeu mano ganhou um inscrito e fã ao mesmo tempo.
Melhor aula q já vi sobre o assunto cara. Parabéns. Assistir muitas aulas, acredite, MUITAS MESMO. até aulas de gringos eu vi, finalmente alguém explica de maneira clara e objetiva. Muito obrigado.
Parabéns pelo trabalho. Ganhou um inscrito. Uma coisa que percebi no seu vídeo/código que refere a inserção dos valores/números é o seguinte: Se for assim: lista = inserir_no_inicio(lista, 10); // número 10 é o primeiro na lista Ao inserir, por exemplo: lista =inserir_no_inicio(lista, 50); número 50 ele virá antes de 10 na ordem de chegada, PORÉM, ao INSERIR um valor por exemplo, lista =inserir_no_inicio(lista, 150); antes dos valores já existentes na lista ele fica na última posição em vez de inserir na primeira como você falou que o código SERIA para inserir no início! EXEMPLO: lista = inserir_no_inicio(lista, 10); // embora fosse primeiro a ser inserido, é o SEGUNDO A SER IMPRIMIDO lista =inserir_no_inicio(lista, 50); PRIMEIRO A SER IMPRIMIDO QUALQUER VALOR DEPOIS DE 50 ELE SERÁ O PRIMEIRO E 50 PASSA A SER SEGUNDO E 10 PASSA PARA A TERCEIRO NA ORDEM PARA IMPRIMIR NA TELA!!! AGORA: pegue qualquer valor por exemplo, lista =inserir_no_inicio(lista, -500); e coloque acima de 10 ele ficará na ultima posição em vez de primeiro ao IMPRIMIR NA TELA! Teste aí para ver!
Muito obrigado mano. Estou precisando entender esse conteúdo na Universidade e não estava conseguindo, graças a você estou vendo uma luz agora. Parabéns! Fica com Deus.
Mano cê me salvou... Eu literalmente estava encrusilhado, tenho uma apresentação amanhã e encontrei-te. Muito obrigado, continue com esse conteúdo excelente...
( 23:56 ) No meu caso consegui fazer assim: No * inserir( no *lista, int dado ) { No * novo_no = ( no* ) malloc( sizeof( no )); novo_no -> num = dado; novo_no -> prox = ( struct no* ) lista; return novo_no; } Se no parâmetro a [ lista = NULL ], na linha [ novo _ no -> prox ] vai receber o valor NULL e a função vai retornar uma nova lista apontando para NULL E se a [ lista ] já tiver dados, [ novo _ no -> prox ] vai receber [ lista anterior com os dados ] e a função vai retornar a [ lista recente apontando para lista anterior ] e depois [ lista recente + lista anterior + lista anterior com o NULL ] ... e assim vai. lista_A -> NULL lista_B -> lista_A -> NULL lista_C -> lista_B -> lista_A -> NULL ...
Douglas, se você puder fazer mais vídeos para ajudar nesta APS, agradeço! Considere a estrutura abaixo, que representará elementos em listas encadeadas: typedef struct elemento { int numero; struct elemento *proximo; } noh; Faça um programa em Linguagem C execute as seguintes funcionalidades: • Criar duas listas encadeadas, contendo elementos preenchidos com números inteiros gerados aleatoriamente (pesquise como gerar números aleatórios em C). • Concatenar as duas listas, gerando uma terceira lista. • Eliminar da memória todos os elementos das duas listas originais. • Imprimir o conteúdo dessa terceira lista. • A lista concatenada, separá-la em outras duas listas: uma que receberá os elementos que contêm números pares, outra que receberá os elementos que contêm números ímpares. • Eliminar da memória todos os elementos da lista concatenada. • Imprimir a lista de pares. Imprimir a lista de ímpares.
struct no { int chave ; struct no prox ; } ; Suponha que o tamanho de cada nó do exercício código acima seja 8 bytes. Qual o tamanho total de uma lista ligada composta por 100 nós? E se fosse armazenado todas as chaves em um vetor de 100 posições, qual seria o tamanho total em bytes? Por fim, existe alguma forma de implementar algum algoritmo usando sizeof que consiga me mostrar isso? nesse caso, em linguagem c.
Por que essa função está retornando um ponteiro do tipo que ele criou. se estivesse retornando um inteiro por exemplo, ficaria: int criar_no( ){ } quando uma função tem retorno, você deve especificar o tipo do retorno antes do nome da função. exemplos: int criar_no(){ return 10; } float criar_no(){ return 10,50; } bool criar_no(){ return true; } basicamente ele está dizendo ao sistema que o retorno da função será do tipo que ele criou ( no) e que esse retorno será um ponteiro(*). Logo temos um ponteiro do tipo no(no*). no* criar no(){ }
Usa resalva, ficaria ainda mais simples se você declarasse sua estrutura da seguinte maneira: typedef struct no{ char nome[20]; int peso; struct no *next; }no;
Essa é sem dúvidas a aula mais explicativa sobre listas que já vi no YT!
Muito obrigada por ensinar algo tão complexo de uma forma simples e didática. Você é um excelente profissional. MUITO obrigada!
00:00 - Listas - apresentação - info
00:53 - Listas - explicação visual - info
03:23 - Estrutura - definição - info
05:48 - Lista - criar - code
08:45 - Typedef - info code
09:40 - Lista - info
10:28 - Lista vazia - criar - code
11:52 - Inserir elemento na lista - info
12:18 - funcao para criar o nó - code
13:25 - malloc - code
14:24 - criar_novo() - info
15:15 - inserir nó no inicio - info
15:24 - inserir nó no inicio - info
18:48 - se lista vazia - info
19:54 - se lista vazia - code
24:20 - função imprime - code
25:12 - regra para imprimir - info
26:40 - imprimir - code
28:39 - inserir elemento - code
29:30 - teste ok - run
29:36 - teste - info
30:15 - teste ok - run
30:35 - teste - info
31:20 - finalização
31:48 - fim
2hs da madruga, desesperado pra aprender urgentemente esse assunto, encontro esse cara. meu heroi!
Heróis não usam capas
Obrigado!! Fico muito feliz em poder ajudar!
Obrigado pelos comentários! Fico muito feliz em poder ajudar!
Melhor explicação que achei entre os 300 vídeos sobre o assunto. É um assunto muito difícil, mas por quê? São muitas informações. Para aprendermos, devemos ver e aprender por parte, início, meio e fim.
Valeu cara, ótimo vídeo
Obrigado!! Muito feliz por ajudar!
todo vídeo que eu achava um explicava de um jeito diferente de outro
Ótima explicação!
Obrigado por facilitar algo tão complesxo.
Tá aí uma matéria q n entrava de jeito nenhum na minha cabeça, nem com o professor da facul, nem com outros videos, nem nd, aí vem o vídeo mais "simples" e abre minha mente.. melhor impossível, fica meu like!
O único vídeo que realmente conseguiu me fazer entender o assunto, obrigada!
melhor explicação que já encontrei. Muito perfeito
Tô vendo vídeos e tentando entender esse conceito a mais de uma semana, e seu vídeo me salvou kkkkkk finalmente consegui entender, muito obrigado
Muito bom bem detalista para ensinar
até que em fim achei um video que me explique como se eu fosse um retardado mental kkkkkkkk. Obrigado mano
Muito obrigado pela aula! Estou muito grato. depois de muito tempo pesquisando fui entender listas ligadas nesse vídeo.
Você foi preciso e didático! Parabéns e obrigado!
Ótima didática!! Obrigada
Estou no 3perioda da faculdade sistema de informaçao e realmente essa materia me da nos nervos!
Melhor vídeo disparado sobre o assunto! Parabéns ao instrutor, as explicações estão muito próximas de quem está com dificuldade para entender o assunto! Muito obrigado!
mano voce acabou de salvar um futuro engenheiro de controle e automação serio o que voce precisar que estiver no meu alcance eu tentarei ajudar, esse video me salvou muito pra entender de verdade a unica materia que nao entrava na minha cabeça desse semestre valeu mano ganhou um inscrito e fã ao mesmo tempo.
estuda em qual faculdade? tbem faço mecatronica
Perfeito! Gratidão!
Melhor aula q já vi sobre o assunto cara.
Parabéns.
Assistir muitas aulas, acredite, MUITAS MESMO. até aulas de gringos eu vi, finalmente alguém explica de maneira clara e objetiva. Muito obrigado.
Muito bom, estava com muita dificuldade de entender, agora que assisti o video tudo parece mais claro, obrigado!
A melhor explicação que eu vi até agora, parabéns e obrigado!
Nem todo herói usa capa kkkk Mt obrigada cara, 2021 e esse vídeo segue ajudando demais!
Melhor aula sobre o assunto que eu encontrei na internet até agora, meus parabéns e continue assim!!!
Obrigado!! Fico feliz em poder contribuir!
meu Deus, como pode uma didática tão boa assim? Tu é o cara irmão!!!!!
Até hj ta salvando.
Que aula meu amigo, desesperado pra aprender pq perdi essa aula e por sorte encontrei seu vídeo, parabéns !!
Obrigado pelo comentário! Muito feliz por fazer o entendimento desse assunto ficar claro!
Obrigado amigo, você é um amigo. Finalmente entendi
mano fiquei a tarde toda lendo e vendo vídeo e você explico de um jeito tão simples que na hora entendi
Parabéns pela explicação ! Você é um herói.
Obrigado! Fico feliz em ajudar!
Rapaz...excelente aula... ainda estou tendo dificuldade mas essa tua aula tem sido melhor que as outras que tenho visto.
Parabéns pelo trabalho. Ganhou um inscrito.
Uma coisa que percebi no seu vídeo/código que refere a inserção dos valores/números é o seguinte:
Se for assim: lista = inserir_no_inicio(lista, 10); // número 10 é o primeiro na lista
Ao inserir, por exemplo: lista =inserir_no_inicio(lista, 50); número 50 ele virá antes de 10 na ordem de chegada, PORÉM, ao INSERIR um valor por exemplo, lista =inserir_no_inicio(lista, 150); antes dos valores já existentes na lista ele fica na última posição em vez de inserir na primeira como você falou que o código SERIA para inserir no início!
EXEMPLO:
lista = inserir_no_inicio(lista, 10); // embora fosse primeiro a ser inserido, é o SEGUNDO A SER IMPRIMIDO
lista =inserir_no_inicio(lista, 50); PRIMEIRO A SER IMPRIMIDO
QUALQUER VALOR DEPOIS DE 50 ELE SERÁ O PRIMEIRO E 50 PASSA A SER SEGUNDO E 10 PASSA PARA A TERCEIRO NA ORDEM PARA IMPRIMIR NA TELA!!! AGORA: pegue qualquer valor por exemplo, lista =inserir_no_inicio(lista, -500); e coloque acima de 10 ele ficará na ultima posição em vez de primeiro ao IMPRIMIR NA TELA! Teste aí para ver!
Parabéns cara, didática show que falta em muito professor com doutorado.
Muito obrigado mano. Estou precisando entender esse conteúdo na Universidade e não estava conseguindo, graças a você estou vendo uma luz agora. Parabéns! Fica com Deus.
Cara, eu te amo de verdade!!! Didática incrível, me salvou, muito obrigada!!!
VOCÊ É O MELHOR!!!!!
Obrigado, fez-me entender o conceito de lista como nunca, pedia que apostasses um video explicando a insercao no meio da lista.
Parabéns, explica MUITO bem.
muito boa a aula, o assunto foi dado de forma bem clara, entendi tudo, muito obrigado e parabéns pela aula.
Muito agradecido pela aula, estava precisando e me ajudou muito.
Obrigado pelo comentário! Fico feliz em ajudar!
Mano cê me salvou... Eu literalmente estava encrusilhado, tenho uma apresentação amanhã e encontrei-te. Muito obrigado, continue com esse conteúdo excelente...
Amigo, consegue me mandar o programa? ou colar aqui? o meu está dando um erro, porém faz dias e não consigo achar ele
Parabéns pelo video. Muito didático!
Que bacana. 2021 e achei esse vídeo maravilhoso. Obrigado professor.
Ótimo vídeo. Você ensina bem, continue a ensinar. Abraços.
Esse é de longe o vídeo mais claro sobre o assunto que eu já vi em duas semanas. Já até compartilhei.
Não esquece de compartilhar no grupo da família. kkkk
Obrigado irmão, vc é TOP d++
Parabéns, o vídeo ficou muito bom, me ajudou muito.
Muito boa a aula
Cara voce salvou minha vida!
Só fui entender como funciona isso graças a vc
Ótima aula. Parabéns. Salvou, haha.
MARAVILHOSOOOOOOOOOOOOOOOOOOOOOO
Obrigado! Fico muito feliz em poder contribuir!
( 23:56 )
No meu caso consegui fazer assim:
No * inserir( no *lista, int dado ) {
No * novo_no = ( no* ) malloc( sizeof( no ));
novo_no -> num = dado;
novo_no -> prox = ( struct no* ) lista;
return novo_no;
}
Se no parâmetro a [ lista = NULL ], na linha [ novo _ no -> prox ] vai receber o valor NULL e a função vai retornar uma nova lista apontando para NULL
E se a [ lista ] já tiver dados, [ novo _ no -> prox ] vai receber [ lista anterior com os dados ] e a função vai retornar a [ lista recente apontando para lista anterior ] e depois [ lista recente + lista anterior + lista anterior com o NULL ] ... e assim vai.
lista_A -> NULL
lista_B -> lista_A -> NULL
lista_C -> lista_B -> lista_A -> NULL ...
Douglas, se você puder fazer mais vídeos para ajudar nesta APS, agradeço! Considere a estrutura abaixo, que representará elementos em listas encadeadas:
typedef struct elemento {
int numero;
struct elemento *proximo;
} noh;
Faça um programa em Linguagem C execute as seguintes funcionalidades:
• Criar duas listas encadeadas, contendo elementos preenchidos com números inteiros
gerados aleatoriamente (pesquise como gerar números aleatórios em C).
• Concatenar as duas listas, gerando uma terceira lista.
• Eliminar da memória todos os elementos das duas listas originais.
• Imprimir o conteúdo dessa terceira lista.
• A lista concatenada, separá-la em outras duas listas: uma que receberá os elementos
que contêm números pares, outra que receberá os elementos que contêm números
ímpares.
• Eliminar da memória todos os elementos da lista concatenada.
• Imprimir a lista de pares. Imprimir a lista de ímpares.
muito bom! parabéns!
Ficou show Douglas!
Vlw! Espero que continuem gostando!
Nossa cara, ajudou muito, valeu!
Muito bom, OBRIGADO!!!!
Muito bom!
mas se puder, preciso que me explique como faço para alterar e remover
struct no {
int chave ;
struct no prox ;
} ;
Suponha que o tamanho de cada nó do exercício código acima seja 8 bytes. Qual o tamanho
total de uma lista ligada composta por 100 nós? E se fosse armazenado todas as chaves
em um vetor de 100 posições, qual seria o tamanho total em bytes?
Por fim, existe alguma forma de implementar algum algoritmo usando sizeof que consiga me mostrar isso? nesse caso, em linguagem c.
Boa tarde, poderia me ajudar com o meu código? Estou com problema na função imprimir e não sei mais o que fazer...
Qual o grupo do whatsapp do canal?
como eu introduzo o char ao invés de int? não consigo fazer apenas mudando o tipo de variável
Codigo primeira parte: (acho que faltou o free() )mas vamos lá:
#include
#include
typedef struct no No;
struct no{
int reg;
struct no *pxm;
};
No* Criar(){
No * novo = (No *)malloc(sizeof(No));
return novo;
}
No * InserirIni(No * Lista, int x){
No *novo = Criar();
novo->reg = x;
if(Lista == NULL){
Lista = novo;
novo->pxm = NULL;
}else{
novo->pxm = Lista;
Lista = novo;
}
return Lista;
}
void Imprimir(No * Lista){
No * aux = Lista;
while(aux != NULL){
printf("%d - ", aux->reg);
aux = aux->pxm;
}
}
int main(){
No *Lista = NULL;
Lista = InserirIni(Lista, 10);
Lista = InserirIni(Lista, 9);
Lista = InserirIni(Lista, 8);
Imprimir(Lista);
return 0;
}
me ajudou muito, queria tirar uma duvida qual zap?
show
Cara, a aula foi ótima! Mas aqui, o código está dando Segmentation fault(core dumped). Como resolver?
pq qunado vc cria a funcao criar_no pq o tipo dela tem asterisco. Ex: No* criar_no(){}, pq tem asterisco?
Por que essa função está retornando um ponteiro do tipo que ele criou. se estivesse retornando um inteiro por exemplo, ficaria: int criar_no( ){
}
quando uma função tem retorno, você deve especificar o tipo do retorno antes do nome da função.
exemplos:
int criar_no(){
return 10;
}
float criar_no(){
return 10,50;
}
bool criar_no(){
return true;
}
basicamente ele está dizendo ao sistema que o retorno da função será do tipo que ele criou ( no) e que esse retorno será um ponteiro(*). Logo temos um ponteiro do tipo no(no*).
no* criar no(){
}
Usa resalva, ficaria ainda mais simples se você declarasse sua estrutura da seguinte maneira:
typedef struct no{
char nome[20];
int peso;
struct no *next;
}no;
To tendo dificuldade pra entender :(
To vendo que vou me fuder muito para aprender essa matéria kkk
Boa abordagem. Apenas sugiro tirar os desenhos, que fazem perder tempo.
muito bom!