O código define uma estrutura de dados do tipo lista ligada simples para armazenar números inteiros inseridos pelo usuário. A função main chama a função insere(), que aloca novos nós na memória, lê números do usuário e os adiciona na lista ligada de forma ordenada.
1. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
Código para gerar uma
estrutura de dados do tipo
lista ligada simples.
2. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
n
struct Numero
aux atual resp
Define o registro.
inicio
3. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
n
no
aux atual resp
Troca o nome.
inicio
4. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
n
no
aux atual resp
Declara os ponteiros
externos.
inicio
NULL
5. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
prox
n
no
aux atual resp
Chama a função.
inicio
NULL
6. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
prox
n
no
aux atual resp
Aloca um nó na memória.
inicio
NULL4040
atual
7. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
no
aux atual resp
Atribui um valor ao membro
do nó.
inicio
NULL4040
atual
8. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
no
aux atual resp
Atribui NULL ao ponteiro
interno prox.
inicio
NULL4040
atual
NULL
9. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
no
aux atual resp
Condição resulta em
verdadeiro.
inicio
NULL4040
atual
NULL
10. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
no
aux atual resp
inicio recebe o endereço
armazenado em atual.
inicio
NULL4040
atual
NULL
4040
inicio
11. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
no
aux atual resp
aux recebe o endereço
armazenado em atual.
inicio
NULL4040
atual
NULL
4040
4040
inicio
aux
12. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
no
aux atual resp
Termina uma iteração.
inicio
NULL4040
atual
NULL
4040
4040
inicio
aux
sim
13. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
aux atual resp
Aloca um novo nó.
inicio
NULL5048
4040
4040
aux
sim
atual
prox
inicio
14. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
aux atual respinicio
NULL5048
4040
4040
aux
sim
atual
prox
inicio
42
Atribui um valor ao membro
do nó.
15. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
aux atual resp
Atribui NULL ao ponteiro
interno prox.
inicio
NULL5048
4040
4040
aux
sim
atual
prox
inicio
42
NULL
16. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
aux atual resp
Conecta o nó anterior
ao nó atual.
inicio
NULL5048
4040
4040
aux
sim
atual
prox
inicio
42
NULL
17. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
aux atual resp
aux aponta para o mesmo
endereço que atual aponta.
inicio
NULL5048
4040
4040
aux
sim
atual
prox
inicio
42
NULL
5048
18. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
aux atual resp
Não será executada
outra iteração.
inicio
NULL5048
4040
4040
aux
sim
atual
prox
inicio
42
NULL
5048 não
19. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
aux atual resp
Condição verificada e resulta
Em valor falso.
inicio
NULL5048
4040
4040
aux
sim
atual
prox
inicio
42
NULL
5048 não
20. struct Numero {
int n;
struct Numero *prox;
};
void insere();
typedef struct Numero no;
no *inicio=NULL, *aux, *atual;
int main()
{
insere();
system("pause");
}
void insere()
{
char resp[4];
do{
atual = (no*)malloc(sizeof(no));
printf("Digite um numeron");
scanf("%d",&atual->n);
atual->prox=NULL;
if(inicio==NULL)
{
inicio=atual;
aux = atual;
}
else
{
aux->prox=atual;
aux = atual;
}
printf("Deseja continuar (sim/nao)?n");
scanf("%s",&resp);
}while(!strcmp(resp,"sim"));
}
prox
21
aux atual resp
Termina o algoritmo.
inicio
NULL5048
4040
4040
aux
sim
atual
prox
inicio
42
NULL
5048 não