Jump to content
ASantos

inserir uma lista de elementos no inicio de outra lista de elementos

Recommended Posts

ASantos

boas,

tou a fazer um projecto e tenho uma duvida, duvida essa que é importantissima para que o projecto faça aquilo que é pedido!!

tenho 2 structs:

typedef struct el1
{
int numero;

}EL1;

typedef struct el2
{
int numero;

}EL2;

ja fiz tda a estructura e funçoes necessarias mas agr tenho um grande problema: preciso de inserir a lista da struct EL2 no inicio da lista do EL1, isto é:

-ambas as listas estao numeradas (por exemplo) de 1 ate 10 e o que eu preciso exatamente é que a lista do EL2 fique com essa numeraçao, mas que a lista do EL1 passe automaticamente de 11 ate 20...

se fosse inserir apenas um elemento no inicio era facil mas o k eu preciso é mesmo de inserir a lista completam á frente do outra!!

n sei se me faço entender!! se me poderem ajudar agradecia!!

ASantos

Share this post


Link to post
Share on other sites
KTachyon

Se as duas structs têm os mesmos tipos, não é mais fácil ter apenas uma struct?

Resolves isso com ponteiros.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
ASantos

sao 2 structs exatamente iguais.. so muda o nome da struct.. pois se calhar resolveria o problema mas para isso tinha de alterar a strutura toda e ponteiros n é o meu forte.. se der para fazer ja com a estrutura que tenho feito é-m mais facil :)

Share this post


Link to post
Share on other sites
KTachyon

Pode não ser o teu forte, mas se queres programar em C, é bom que passe a ser mais um "forte".


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
RSFalcon7

não percebi qual a tua duvida...

se ja tens um modulo de listas usa void *, mas não lógica nenhuma ter duas struct's exactamente iguais.

Share this post


Link to post
Share on other sites
ASantos

Pode não ser o teu forte, mas se queres programar em C, é bom que passe a ser mais um "forte".

pois e n kero programar em c, mas neste momento sou obrigado pk é uma disciplina do meu curso :S

loool

tao e apenas com uma struct como se resolveria o problema?? :P tipo eu n kero adicionar um elemento no inicio, eu kero adicionar uma lista de elementos no inicio.. se me podesses ajudar agradecia

Share this post


Link to post
Share on other sites
ASantos

não percebi qual a tua duvida...

se ja tens um modulo de listas usa void *, mas não lógica nenhuma ter duas struct's exactamente iguais.

pois parece k vou ter de mudar e fazer apenas uma struct.. mas a minha duvida continua a ser a mesma.. tipo para ser mais preciso eu tenho uma lista de pessoas normais e uma lista de pessoas prioritarias e a minha duvida é: como inserir a lista de pessoas prioritarias á frente da lista de pessoas normais pela mesma ordem em k estao na lista ja definida???

Share this post


Link to post
Share on other sites
KTachyon

Depende de como precisares das listas. Se precisas de aceder a elementos específicos no meio das listas com alguma eficiência, o melhor será teres um ponteiro para memória. Fazes um alloc com o espaço que precisas para ter as duas listas, ou fazes o realloc a uma e adicionas os elementos da segunda ao fim da lista (copiando).

Se não precisas de acessos directos e apenas pretendes uma lista, podes fazer com listas ligadas, onde tens um ponteiro para o primeiro nó da lista e cada nó liga ao elemento seguinte (com um ponteiro).

Como podes ver, em qualquer caso, ponteiros é a solução :P


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
KTachyon

pois parece k vou ter de mudar e fazer apenas uma struct.. mas a minha duvida continua a ser a mesma.. tipo para ser mais preciso eu tenho uma lista de pessoas normais e uma lista de pessoas prioritarias e a minha duvida é: como inserir a lista de pessoas prioritarias á frente da lista de pessoas normais pela mesma ordem em k estao na lista ja definida???

Ou seja, se apenas precisas de ter a listagem ordenada, uma lista ligada deverá servir perfeitamente.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
ASantos

eu preciso apenas e so de inserir uma lista de pessoas prioritarias no inicio da lista de pessoas normais.. é so isso!! consigo adicionar um elemento de uma lista mas se adicionar apenas o elemento da lista vai ficar com a ordem trocada :S

vou tentar fazer por listas ligadas :P

bigado pela ajuda!!!

ja agr por hashing tambem nao dá para me resolver o problema?

Share this post


Link to post
Share on other sites
KTachyon

Hashing não serve para ajudar a ordenar. Serve para facilitar a pesquisa.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
ASantos

encontrei aki um pequeno problema: lista ligadas é a mesma coisa que lista bi-ligada??

Share this post


Link to post
Share on other sites
KTachyon

Bi-ligada significa que queres poder andar para trás e para a frente.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
ASantos

Bi-ligada significa que queres poder andar para trás e para a frente.

oh sim!! esquece.. foi uma pergunta mt estupida!! lool

olha eu acho que nao dei materia suficiente para fazer este projecto!! tipo so consigo inserir no inicio um elemento, mas nao consigo inserir a lista de elementos toda(sem alterar ordem) no inicio..  :S acho que vou fazer como se fossem tds normais e assim que souber exatamente como se faz akilo que eu quero posto aqui :P

Share this post


Link to post
Share on other sites
KTachyon

Se tiveres duas listas ligadas, no final de as criares, basta ligares o ponteiro do último elemento da lista prioritária ao primeiro elemento da segunda lista.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
RSFalcon7

parece-me que o seu problema é o mesmo deste tópico:

http://www.portugal-a-programar.pt/index.php?showtopic=44371

se vais gerir sempre duas listas durante o programa (o caso do seu colega), não é boa ideia junta-las, pode ser melhor te-las separadas e vais buscar a informação onde quiseres (no caso da lista com prioridades, só busca a lista normal quando a de prioridades estiver vazia), é mais eficiente e mais fácil!

Share this post


Link to post
Share on other sites
ASantos

parece-me que o seu problema é o mesmo deste tópico:

http://www.portugal-a-programar.pt/index.php?showtopic=44371

se vais gerir sempre duas listas durante o programa (o caso do seu colega), não é boa ideia junta-las, pode ser melhor te-las separadas e vais buscar a informação onde quiseres (no caso da lista com prioridades, só busca a lista normal quando a de prioridades estiver vazia), é mais eficiente e mais fácil!

hummm provavelmente deve ser do meu curso!! pelo menos o projecto é mt igual :P lool 

pois assim ate será melhor... inda n me tinha ocorrido essa ideia.. vou ver no k dá!! thanks!!

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.