摆脱FIFO结构的中间单元

时间:2016-10-28 17:00:23

标签: c timeline fifo

我使用FIFO结构来获得时间线的简化版本。问题是,当喜欢一条消息时,它必须再次转到结构的顶部。

为了做到这一点,我想把它从堆里取出并再次堆放在上面,更新喜欢的数量。

不幸的是,我无法想到一种简单的方法来让FIFO结构中间的单元格离开它。

时间线上的

文件:

typedef struct tipoConteudoMsg {
    int idUsuario;
    int idMsg;
    char msg[280];
    int tempo;
    int curtidas;
} tipoConteudoMsg;

typedef struct tipoMsg *apontadorTimeline;

typedef struct tipoMsg {
    tipoConteudoMsg cont; // content of the message;
    apontadorTimeline prox;
} tipoMsg; // celula

typedef struct tipoTimeline {
    apontadorTimeline fundo, topo;
    int tamanho;
} tipoTimeline; // pilha

我可以将指针指向具有我需要的消息ID的单元格,或指向堆栈正上方的单元格的指针。

on timeline.c文件,以防人们需要了解我如何实现FIFO结构:

// fazTimelineVazia means "create empty timeline (FIFO structure)
void fazTimelineVazia (tipoTimeline *timeline) {
    timeline->topo = (apontadorTimeline) malloc(sizeof(tipoMsg));
    timeline->fundo = timeline->topo;
    timeline->topo->prox = NULL;
    timeline->tamanho = 0;
}

// empilhaTimeline means "pile message on top of the FIFO structure"
void empilhaTimeline (tipoTimeline *timeline, tipoConteudoMsg msg) {
    apontadorTimeline aux;

    aux = (apontadorTimeline) malloc(sizeof(tipoMsg));

    timeline->topo->cont = msg;
    aux->prox = timeline->topo;
    timeline->topo = aux;
    timeline->tamanho++;
}

0 个答案:

没有答案