#include <stdio.h>
#include <stdlib.h>
typedef struct elt {
struct elt *next; // Elément suivant
struct elt *precedent;
int value; // Valeur stockée dans le noeud
} ELT, *pELT;
pELT head=NULL;
pELT addElt(pELT head, int v) {
pELT n;
n=malloc(sizeof(ELT));
n->value = v;
n->next = head;
return n;
}
void printElts(pELT l) {
pELT p;
for(p = l; p; p=p->next) {
printf("Valeur : %d\n", p->value);
}
}
int main(void) {
head = addElt(head, 1);
head = addElt(head, 2);
head = addElt(head, 3);
printElts(head);
return EXIT_SUCCESS;
}
我想将这个 LIFO(后进先出)结构转换为 FIFO(先进先出)。 我不想改变主要。我只想以 FIFO 而不是 LIFO 方式打印
最佳答案
现在您将元素“添加”到列表中,这是一种 stack :
n = malloc(sizeof(ELT));
n->value = v;
n->next = head;
如果您想将元素“追加”到列表末尾,使其成为一种 queue ,您只需将“添加元素”任务沿着列表向下传递(例如递归地),直到到达末尾:
pELT addElt(pELT head, int v) {
if "head->next is NULL" {
// end of list reached, put "v" here
} else {
// we're in the middle of the list, go on with the child:
head->next = addElt(head->next, v)
}
}
这只是一个想法,实现起来非常简单
关于c - 结构体将 LIFO 转换为 FIFO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24272971/