rgcouto Posted June 27, 2008 at 01:35 AM Report Share #193932 Posted June 27, 2008 at 01:35 AM Boas, Estou aqui com uma dúvida, alguém me pode dar o código de inserção à cabeça de Listas Ligadas? É que tinha o código, mas entretanto nao sei onde o pûs :/ Abraço.. www.rgcouto.net Link to comment Share on other sites More sharing options...
Black Tiger III Posted June 27, 2008 at 02:26 AM Report Share #193939 Posted June 27, 2008 at 02:26 AM Boas, Estou aqui com uma dúvida, alguém me pode dar o código de inserção à cabeça de Listas Ligadas? É que tinha o código, mas entretanto nao sei onde o pûs :/ Abraço.. inserir á cabeça? Ora bem, deixa ver se ainda me lembro disso: typedef struct coisasInuteis { int b; char nome[10]; struct coisasInuteis *next; } *MesmoInuteis; int insere(MesmoInuteis realmenteInuteis, int bla, char uuuu[10]) { MesmoInuteis * aux; aux=(MesmoInuteis*)malloc(sizeof(MesmoInuteis)); aux->b=bla; strcpy(aux->nome, uuuu); aux->next=realmenteInuteis; return 0; } Acho que é assim, não testei, mas pelo que me lembro, truclas =D Abraços BTIII Órale MI RAZA, MY BLOOD HOLMES BELONGS TO ME ÉSE... EENNNGGGGEEEENNNNNNNHHHHAAAARRRRRIIIIIIIIIIAAAAAAAINFORMATICASISTEMAS.... Link to comment Share on other sites More sharing options...
Maatos Posted June 27, 2008 at 02:41 AM Report Share #193943 Posted June 27, 2008 at 02:41 AM olha o povo da LEI com exame amanhã. Good Luck 😉 Link to comment Share on other sites More sharing options...
nata79 Posted June 27, 2008 at 02:42 AM Report Share #193944 Posted June 27, 2008 at 02:42 AM inserir á cabeça? Ora bem, deixa ver se ainda me lembro disso: typedef struct coisasInuteis { int b; char nome[10]; struct coisasInuteis *next; } *MesmoInuteis; int insere(MesmoInuteis realmenteInuteis, int bla, char uuuu[10]) { MesmoInuteis * aux; aux=(MesmoInuteis*)malloc(sizeof(MesmoInuteis)); aux->b=bla; strcpy(aux->nome, uuuu); aux->next=realmenteInuteis; return 0; } Acho que é assim, não testei, mas pelo que me lembro, truclas =D Abraços BTIII acho que tem aí alguns erros... o MesmoInuteis já é um apontador pa estrutura, logo o aux vai ser um apontador para apontador e n tás a modificar a lista inicial, acho que o melhor seria a função retornar MesmoInuteis, algo tipo: MesmoInuteis insere(MesmoInuteis realmenteInuteis, int bla, char uuuu[10]) { MesmoInuteis aux; aux=(MesmoInuteis)malloc(sizeof(MesmoInuteis)); aux->b=bla; strcpy(aux->nome, uuuu); aux->next=realmenteInuteis; return aux; } arithmeticoverflow.wordpress.com Link to comment Share on other sites More sharing options...
Black Tiger III Posted June 27, 2008 at 11:45 PM Report Share #194220 Posted June 27, 2008 at 11:45 PM é pá é provavel, nada que um compilador não resmunga-se, tirando não devlver a lista. Ele disse que queria inserir á cabeça, não disse que queria devolver 😉 fiu 😛 Nata79, por acaso voce não ser o pastel... Órale MI RAZA, MY BLOOD HOLMES BELONGS TO ME ÉSE... EENNNGGGGEEEENNNNNNNHHHHAAAARRRRRIIIIIIIIIIAAAAAAAINFORMATICASISTEMAS.... Link to comment Share on other sites More sharing options...
TheDark Posted June 28, 2008 at 01:49 AM Report Share #194234 Posted June 28, 2008 at 01:49 AM Nata79, por acaso voce não ser o pastel... Meninos, PM ftw 😉 Nata79, ali na linha aux=(MesmoInuteis)malloc(sizeof(MesmoInuteis)); estás a reservar espaço para um apontador. É preciso adicionar outra definição no typedef para alocar espaço correctamente: typedef struct _coisasInuteis { /* (...) */ } CoisasInuteis, *MesmoInuteisP; /* (...) */ aux=(MesmoInuteisP)malloc(sizeof(CoisasInuteis)); /* (...) */ Desaparecido. Link to comment Share on other sites More sharing options...
Guest id194 Posted June 28, 2008 at 02:17 AM Report Share #194235 Posted June 28, 2008 at 02:17 AM Ou então tirar o * do typedef e usa-lo só quando necessário, ou seja, sempre menos no sizeof :X Link to comment Share on other sites More sharing options...
ville Posted June 28, 2008 at 01:44 PM Report Share #194270 Posted June 28, 2008 at 01:44 PM e para inserir as strings ordenadamente o que fazem? usam o stcmp? Link to comment Share on other sites More sharing options...
nata79 Posted June 28, 2008 at 05:13 PM Report Share #194295 Posted June 28, 2008 at 05:13 PM e para inserir as strings ordenadamente o que fazem? usam o stcmp? sim... s o resultado d strcmp for positivo a segunda string é "maior" que a primeira, s for negativo é o contrário e se for 0 são iguais... axo eu que é mais ou menos isto... faço sempre uma confusão dos diabos com o strcmp... arithmeticoverflow.wordpress.com Link to comment Share on other sites More sharing options...
hpaixao Posted June 28, 2008 at 08:59 PM Report Share #194319 Posted June 28, 2008 at 08:59 PM sim... s o resultado d strcmp for positivo a segunda string é "maior" que a primeira, s for negativo é o contrário e se for 0 são iguais... axo eu que é mais ou menos isto... faço sempre uma confusão dos diabos com o strcmp... Nata, realmente acho que fizeste confusão: strcmp( s, v) > 0 ----> s é "maior" que v strcmp(s, v) == 0 -----> s é igual a v strcmp(s,v) <0 ------> s é "menor" que v Link to comment Share on other sites More sharing options...
troser Posted July 13, 2008 at 05:44 PM Report Share #198232 Posted July 13, 2008 at 05:44 PM Eu já sei inserir à cabeça e no fim da lista. E se quisermos fazer a inserção no meio da lista, Por exemplo: typedef struct celula *LInt; struct celula{ int valor; LInt next; }; LInt insert_at (LInt, int, int) Em que LInt é a lista, o primeiro int é o inteiro que quero inserir e o segundo int é a posição. Se a posição for maior que o tamanho da lista o valor é inserido no fim desta. Link to comment Share on other sites More sharing options...
Baderous Posted July 13, 2008 at 05:47 PM Report Share #198234 Posted July 13, 2008 at 05:47 PM Tens que ir percorrendo a lista e ir contando sempre o nº de elementos que já percorreste (através de um acumulador). Quando estiveres no elemento cuja posição é igual n-1 (sendo n a posição onde queres inserir), crias o novo nodo e alteras os apontadores. Link to comment Share on other sites More sharing options...
troser Posted July 13, 2008 at 06:54 PM Report Share #198254 Posted July 13, 2008 at 06:54 PM Já tenho aqui algo que acho que funciona. Fica aqui pra quem quiser. Agradecimentos a quem me fez isto e me aturou pra me explicar. 😛 typedef struct listaligada{ int valor; struct listaligada *prox; } * LInt; LInt insert_at (LInt l, int v, int p){ int i; LInt k, ik, novo; if(l==NULL){ l=(LInt) malloc(sizeof(struct listaligada)); l->valor=v; l->prox=NULL; }else if (p==0){ LInt aux; aux=(LInt) malloc (sizeof(struct listaligada)); aux->valor=v; aux->prox=l; l=aux; }else{ i=0; k=l; while(i<p || k!=NULL){ ik=k; //guarda o anterior i++; //aumenta o contador k=k->prox; //avança na lista } novo=(LInt) malloc(sizeof(struct listaligada)); novo->valor=v; novo->prox=k; ik->prox=novo; } return l; } Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now