我使用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++;
}