Filas em C [RESOLVIDO]

1. Filas em C [RESOLVIDO]

NICHOLAS
p0w3llx

(usa Debian)

Enviado em 12/08/2015 - 18:19h

Galera estou vendo uns exemplo de fila e fiquei com algumas duvidas vou mostrar o codigo antes:

#include <stdio.h>
#include <stdlib.h>

struct NO{
int numero;
struct NO *proximo;
};
typedef struct NO no;

no *RETIRADA(no *FILA)
{
if(FILA->proximo == NULL){
printf("Fila ja esta vazia\n");
}else{
no *temp = FILA->proximo;
FILA->proximo = temp->proximo;
}

}


void OPCOES(no *FILA, int op)
{
no *temp;
switch(op){
case 0:
LIBERACAO(FILA);
break;

case 1:
INSERIR(FILA);
break;

case 2:
temp= RETIRADA(FILA);
break;

case 3:
EXIBIR(FILA);
break;

default:
printf("Comando invalido\n\n");
}
}


int vazia(no *FILA)
{
if(FILA->proximo == NULL)
return 1;
else
return 0;
}

no *ALOCACAO()
{
no *novo= malloc(sizeof(no));
if(!novo){
printf("Sem memoria disponivel!\n");
exit(1);
}else{
printf("Novo elemento na Fila: "); scanf("%d", &novo->numero);
return novo;
}
}

void INSERIR(no *FILA)
{
no *novo=ALOCACAO();
novo->proximo = NULL;

if(vazia(FILA))
FILA->proximo=novo;
else{
no *temp = FILA->proximo;

while(temp->proximo != NULL)
temp = temp->proximo;

temp->proximo = novo;
}

}

void EXIBIR(no *FILA)
{
if(vazia(FILA)){
printf("Fila vazia!\n\n");
return ;
}

no *temp;
temp = FILA->proximo;
printf("\nFila :");
while( temp != NULL){
printf("%5d", temp->numero);
temp = temp->proximo;
}

printf("\n\n");
}

void LIBERACAO(no *FILA)
{
if(!vazia(FILA)){
no *proxNode,
*atual;

atual = FILA->proximo;
while(atual != NULL){
proxNode = atual->proximo;
free(atual);
atual = proxNode;
}
}
}


int main(void)
{
int opt;

no *FILA = malloc(sizeof(no));
if(!FILA){
printf("Sem memoria!\n");
exit(1);
}else{
FILA->proximo = NULL;

do{

printf("Opcoes\n");
printf("0 - Sair\n");
printf("1 - Inserir\n");
printf("2 - Retirar\n");
printf("3 - Exibir\n");
printf("Opcao: ");
scanf("%d", &opt);

OPCOES(FILA,opt);
}while(opt);

free(FILA);
return 0;
}
}

Queria saber oque significa "->" ,e oque de fato esta linha faz scanf("%d", &novo->numero), sei que ela armazena o valor em 'novo'
mas oque ->numero faz?


  


2. MELHOR RESPOSTA

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 12/08/2015 - 18:30h

Como é um ponteiro, o "correto", seria fazer assim (*ponteiro).algo. Mas nessa forma, é mais fácil de errar, então criaram o operador ->, ou seja, em vez de (*ponteiro).algo seria ponteiro->algo.

Espero ter ajudado

[]'s

T+

--

body@human: $ sudo su
brain@human: # apt-get purge -y windows* && echo "Windows removed successfully"



3. Re: Filas em C [RESOLVIDO]

NICHOLAS
p0w3llx

(usa Debian)

Enviado em 12/08/2015 - 18:39h


intao o valor de "novo" sera o proximo na fila?



4. Re: Filas em C [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 12/08/2015 - 18:43h

p0w3llx escreveu:
Então o valor de "novo" sera o próximo na fila?

Sim

scanf("%d", &(*novo).numero).


Espero ter ajudado

[]'s

T+

--

body@human: $ sudo su
brain@human: # apt-get purge -y windows* && echo "Windows removed successfully"




5. Re: Filas em C [RESOLVIDO]

Eduardo Augusto
daoaugusto

(usa Debian)

Enviado em 13/08/2015 - 14:56h

Essa seta(->) em c é uma das maneira de atribuir valores utilizando ponteiro. Ao invés de utilizar o & para trabalhar com endereço de memória, também pode utilizar ->, são notações diferentes para trabalhar com endereço de memória, mas tanto o & quanto o -> fazem a mesma coisa.

Espero ter ajudado !






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts