#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打印
答案 0 :(得分:0)
现在你将元素“前置”到列表中,这是一种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)
}
}
这只是一个想法,实施非常简单