C 在包含列表的列表中搜索元素列表

C 在包含列表的列表中搜索元素列表,c,data-structures,tree,linked-list,C,Data Structures,Tree,Linked List,我有一组元素{1,2,3},{2,3,4},{1,2,4},{7,8},{3,4,7,9},{12,16,18,19},{1,2,4} 我需要有一个数据结构,其中包含上述列表只出现一次。如果出现任何新列表,并且它与任何现有列表匹配,那么我不希望将其添加到结果数据结构中 对于上述示例,预期结果应为: {1,2,3},{2,3,4},{1,2,4},{7,8},{3,4,7,9},{12,16,18,19} 我的一个解决方案是使用树。 对于ex:{1,2,3},{1,2,4} 在上面的列表中,我将从

我有一组元素{1,2,3},{2,3,4},{1,2,4},{7,8},{3,4,7,9},{12,16,18,19},{1,2,4}

我需要有一个数据结构,其中包含上述列表只出现一次。如果出现任何新列表,并且它与任何现有列表匹配,那么我不希望将其添加到结果数据结构中

对于上述示例,预期结果应为: {1,2,3},{2,3,4},{1,2,4},{7,8},{3,4,7,9},{12,16,18,19}

我的一个解决方案是使用树。 对于ex:{1,2,3},{1,2,4} 在上面的列表中,我将从值为2的节点分支出第一个列表的值3和第二个列表的值4。通过这种方式,我可以从根目录跟踪列表,并确定列表是否出现

     Root
      |
      |
      1
      |
      |
------2------
|            |
|            |
3            4

请建议是否有任何算法可以使用C以简单的方式使其更快。

您可以使用图形数据结构来实现这一点

要在c中执行此操作,可以使用以下方法之一:

  • 邻接矩阵
  • 在这种方法中,您需要维护数字之间的关系矩阵,请查看下图:

  • 链接列表
  • 在此方法中,您将维护一个连接列表,即如果2与1,3,4有连接,则将创建一个1,3,4列表,其头值为:2

    这些图像取自:。 你可以在同一个网站上找到很好的解释和示例代码:link


    希望对您有所帮助。

    您可以使用图形数据结构来实现这一点

    要在c中执行此操作,可以使用以下方法之一:

  • 邻接矩阵
  • 在这种方法中,您需要维护数字之间的关系矩阵,请查看下图:

  • 链接列表
  • 在此方法中,您将维护一个连接列表,即如果2与1,3,4有连接,则将创建一个1,3,4列表,其头值为:2

    这些图像取自:。 你可以在同一个网站上找到很好的解释和示例代码:link


    希望有帮助。

    经典图形!顺序重要吗?定向图用这种方法,你必须为每个以新数字开头的列表创建一棵树…检查经典图!顺序重要吗?定向图用这种方法,你必须为每个以新编号开始的列表创建一个树…检查