Concatenação de listas. Escreva um programa que concatene duas listas de caracteres encadeadas. O programa deverá incluir a função concatenate , que recebe ponteiros para as duas listas como argumentos e concatena a segunda lista com a primeira.

Passo 1

Fala galera, tudo tranquilo? Iremos fazer um código para unir duas listas. Como faremos isso? Primeiro vamos criar a lista 1, onde ela deve ir até um certo ponto e depois criamos a lista 2 que vai dar continuidade a lista 1. Então, após ter criado as duas listas, nós vamos uni-las . Vamos lá!

Dividi em 3 passos: montar a função struct determinando os nós, aplicar as condições e inserir os dados para concatenar.

struct node

{

int info;

struct node *link;

};

struct node *create_list(struct node *);

struct node *concatenate( struct node *list1,struct node *list2);

struct node *inicio(struct node *start, int data);

struct node *fim(struct node *start,int data);

void display(struct node *start);

iniciando com cabeçalho struct node. Para que possam ir adicionando os nós que iremos usar da linha 2 até a linha 14 (estou citando as linhas no meu código, o de vocês pode ter menos ou mais linhas).

int main () da linha 16 até a linha 31 são os dados que será inseridos nas duas listas.

Da linha 33 a linha 48 são inseridos os pontos para retorno quando as listas estão vazias

struct node *concatenate( struct node *list1,struct node *list2)

{

struct node *ptr;

if(list1==NULL)

{

list1=list2;

return list1;

}

if(list2==NULL)

return list1;

ptr=list1;

while(ptr->link!=NULL)

ptr=ptr->link;

ptr->link=list2;

return list1;

}

Passo 2

Da linha 49 a 69 foram dados os passos de inserir os elementos das listas. Na variável int exite um i e um n. onde serão indicados para número de nós e números que vc vai inserir na lista (estou usando número mas vc pode usar nomes, basta mudar a função int para outra que não seja inteiro, tente com char)

struct node *create_list(struct node *start)

{

int i,n,data;

printf("\nEntre com número de nós : ");

scanf("%d",&n);

start=NULL;

if(n==0)

return start;

printf("Entre com os elementos a serem inseridos : ");

scanf("%d",&data);

start=inicio(start,data);

for(i=2;i

{

printf("Entre com os elementos a serem inseridos : ");

scanf("%d",&data);

start=fim(start,data);

}

return start;

}/*Fim da create_list()*/

Da linha 88 a 109 fazemos a alocação e inserimos o ponteiro tempo para os ponteiros inicio e fim.

struct node *inicio(struct node *start,int data)

{

struct node *temp;

temp=(struct node *)malloc(sizeof(struct node));

temp->info=data;

temp->link=start;

start=temp;

return start;

}/*encerrando inicio()*/

struct node *fim(struct node *start, int data)

{

struct node *p,*temp;

temp= (struct node *)malloc(sizeof(struct node));

temp->info=data;

p=start;

while(p->link!=NULL)

p=p->link;

p->link=temp;

temp->link=NULL;

return start;

}/*encerrando fim()*/

Irei por imagens do código para vocês!

. É isso galera, espero ter ajudado e vamos para mais um exercício. Valeu!

Resposta