【问题标题】:How to see if a struct in struct pointer contains an element如何查看结构指针中的结构是否包含元素
【发布时间】:2015-03-24 09:40:00
【问题描述】:

我有一个结构定义为:

typedef struct ltsaNode {
   int call;
   int action;
   ltsaNode *nextActions;
   ltsaNode *sibling;
} ltsaNode;

还有一个结构指针*wanted和一个int i

我想检查wanted 中的任何结构是否有call 等于i

我目前的解决方案:

BOOL a = FALSE;
for(;wanted!= NULL;wanted->sibling)
{
    if(wanted->call == i)
    {
        a=TRUE;
        break;
    }
}

有没有更好或更快的方法来做到这一点?

【问题讨论】:

  • 你从一些想要的价值开始。只要需要与 NULL 不同,您就会一直循环。在每次迭代中,您都希望增加。祝你好运,等待它变为 NULL。
  • @DanielDaranas 编辑了代码。为循环添加了兄弟姐妹

标签: c pointers for-loop struct


【解决方案1】:

我猜这就是你要找的东西。

BOOL a = FALSE;
for(; wanted != NULL; wanted = wanted->sibling)
{
    if(wanted->call == i)
    {
        a = TRUE;
        break;
    }
}

【讨论】:

  • 感谢您的快速回复,但我不想遍历 nextActions。在找到调用并使用操作后,wanted 变为 nextActions。
  • 您的问题没有提供足够的信息来理解指向您的结构的指针存储在数组中。当你找到一个带有call == i 的结构时,你也不清楚你想做什么。无论如何,我希望我的回答有所帮助。
  • @chmike 您的 awnser 帮助重构了代码。我添加了兄弟来循环
  • 好的。我看到了兄弟领域。请注意,您必须写 wanted = wanted->sibling。单独写wanted->sibling 将无济于事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
相关资源
最近更新 更多