gpt4 book ai didi

c - 结构体将 LIFO 转换为 FIFO

转载 作者:行者123 更新时间:2023-11-30 21:11:19 27 4
gpt4 key购买 nike

#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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com