walkyrr Postado Novembro 28, 2015 Denunciar Share Postado Novembro 28, 2015 Estou com duvida se esse código e simplesmente encadeado ou duplamente encadeado, alguém pode me ajudar?Isso é uma implementação de um Deque. #include <stdio.h>#include <stdlib.h>typedef struct TipoCelula *TipoApontador;typedef int TipoChave;typedef struct TipoItem{ TipoChave Chave;} TipoItem;typedef struct TipoCelula{ TipoItem Item; TipoApontador Prox;} TipoCelula;typedef struct TipoDeque{ TipoApontador Frente, Tras;} TipoDeque;void IniciaDeque(TipoDeque *Deque){ Deque->Frente = (TipoApontador) malloc(sizeof(TipoCelula)); Deque->Tras = Deque->Frente; Deque->Frente->Prox = NULL;}int Vazio(TipoDeque Deque){ return (Deque.Frente == Deque.Tras);}void InsereUltimo(TipoItem x, TipoDeque *Deque){ if (Vazio (*Deque)) printf("\nO item %d foi o primeiro a ser inserido no Deque\n\n",x.Chave); else printf("\nO item %d foi inserido no final do Deque\n\n",x.Chave); Deque->Tras->Prox = (TipoApontador) malloc(sizeof(TipoCelula)); Deque->Tras = Deque->Tras->Prox; Deque->Tras->Item = x; Deque->Tras->Prox = NULL;}void InserePrimeiro (TipoItem x, TipoDeque *Deque){ TipoApontador novo; if (Vazio (*Deque)) { InsereUltimo(x, Deque); } else { novo = (TipoApontador) malloc(sizeof(TipoCelula)); novo -> Prox = Deque->Frente-> Prox; Deque->Frente-> Prox= novo; novo -> Item = x; printf("\nO item %d foi inserido no inicio do Deque\n\n",x.Chave); }} Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
walkyrr
Estou com duvida se esse código e simplesmente encadeado ou duplamente encadeado, alguém pode me ajudar?
Isso é uma implementação de um Deque.
#include <stdio.h>
#include <stdlib.h>
typedef struct TipoCelula *TipoApontador;
typedef int TipoChave;
typedef struct TipoItem
{
TipoChave Chave;
} TipoItem;
typedef struct TipoCelula
{
TipoItem Item;
TipoApontador Prox;
} TipoCelula;
typedef struct TipoDeque
{
TipoApontador Frente, Tras;
} TipoDeque;
void IniciaDeque(TipoDeque *Deque)
{
Deque->Frente = (TipoApontador) malloc(sizeof(TipoCelula));
Deque->Tras = Deque->Frente;
Deque->Frente->Prox = NULL;
}
int Vazio(TipoDeque Deque)
{
return (Deque.Frente == Deque.Tras);
}
void InsereUltimo(TipoItem x, TipoDeque *Deque)
{
if (Vazio (*Deque))
printf("\nO item %d foi o primeiro a ser inserido no Deque\n\n",x.Chave);
else printf("\nO item %d foi inserido no final do Deque\n\n",x.Chave);
Deque->Tras->Prox = (TipoApontador) malloc(sizeof(TipoCelula));
Deque->Tras = Deque->Tras->Prox;
Deque->Tras->Item = x;
Deque->Tras->Prox = NULL;
}
void InserePrimeiro (TipoItem x, TipoDeque *Deque)
{
TipoApontador novo;
if (Vazio (*Deque))
{
InsereUltimo(x, Deque);
}
else
{
novo = (TipoApontador) malloc(sizeof(TipoCelula));
novo -> Prox = Deque->Frente-> Prox;
Deque->Frente-> Prox= novo;
novo -> Item = x;
printf("\nO item %d foi inserido no inicio do Deque\n\n",x.Chave);
}
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.