gpt4 book ai didi

c++ - 需要循环中逻辑的建议

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:39 24 4
gpt4 key购买 nike

我有双向链表的三个元素,我有两个操作:foo()bar() .

基于一些 bool 标志,我必须执行 foo()操作(如果 true )在两个元素的第一个上,并且 bar()对剩余单个元素的操作(如果 false)。

所以,这是干净的代码,但错误的是它对两个元素都执行了 foo():

while(head->next != NULL)
{
if(head->flag == true)
{
foo();
}
if(head->flag == false)
{
bar();
}
head = head->next;
}

列表元素可能以随机顺序出现,因此它可能是 A、C、B 或 B、A、C(假设 A 和 B 在这两种情况下都需要 foo() 操作)。

我的问题是,如果 A 和 B 先出现,我将对它们都调用 foo() 函数(我不能如上所述)。

实际上,当我再次分析它时,我发现在每种情况下我都会让这个函数被调用两次。

我想出的解决方案是:

int flag = 0;
while(head->next != NULL)
{
if(head->flag == true && flag == 0)
{
foo();
flag = 1;
}
if(head->flag == false)
{
bar();
}
head = head->next;
}

但是代码突然变得丑陋了。

有没有办法在不使用标志并保持代码整洁的情况下解决这个问题?

最佳答案

void NullFunc( void ) {}
void (*operation)(void) = foo;

while( head->next != NULL )
{
if( head->flag == true )
{
operation();
operation = NullFunc;
}
else
{
bar();
}

head = head->next;
}

关于c++ - 需要循环中逻辑的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909937/

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