Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用数据结构的日历和待办事项列表_C++_Algorithm_Data Structures_Linked List_Doubly Linked List - Fatal编程技术网

C++ 使用数据结构的日历和待办事项列表

C++ 使用数据结构的日历和待办事项列表,c++,algorithm,data-structures,linked-list,doubly-linked-list,C++,Algorithm,Data Structures,Linked List,Doubly Linked List,我正在寻找一个日历和任务清单为任何相应的一天-就像大多数日历应用程序。本实践的主要目的是有效地使用数据结构。 我想到了两种方法: 对日历日使用数组,然后为相应日创建任务的链接列表 两者都使用链表 另一个问题是:我可以在上面的场景中使用树吗? 也许我完全错了。请引导我通过,我渴望学习 注:我将使用C++作为我的工具,但不是STL。 考虑到您的第一种方法在时间复杂性方面更为有效,因为与任何一天相关的任务都可以在数组中以固定时间访问。但缺点是它会比链表占用更多的空间。 如果在日历日使用链接列表,则可以

我正在寻找一个日历和任务清单为任何相应的一天-就像大多数日历应用程序。本实践的主要目的是有效地使用数据结构。 我想到了两种方法:

  • 对日历日使用数组,然后为相应日创建任务的链接列表

  • 两者都使用链表

  • 另一个问题是:我可以在上面的场景中使用树吗? 也许我完全错了。请引导我通过,我渴望学习

    注:我将使用C++作为我的工具,但不是STL。
    考虑到

    您的第一种方法在时间复杂性方面更为有效,因为与任何一天相关的任务都可以在数组中以固定时间访问。但缺点是它会比链表占用更多的空间。
    如果在日历日使用链接列表,则可以为每天添加一个新节点,而不是一次添加一个节点(如在数组中)。因此,在这两种情况下,最终的空间使用将是相同的

    就树而言,您可以使用like,它通常被实现为,从而在时间(对数)和空间/内存(与日历中存储的天数成比例,但与数组不同,没有空间浪费)方面为您提供相当好的效率。在这种情况下,可以将日期与字符串的链接列表相关联


    如果我是你,我会使用
    map

    对不起,我应该提一下。我必须使用基本结构,所以我不打算使用STL。考虑到您的答案,我想我可以使用第二种方法,用户可以在需要时创建新的日期条目和任务列表。我能用二叉树吗?好心的,再亮一点!嗯,是的,您可以使用按日期排序的节点,每个节点都有一个表示任务的字符串链表。也就是说,节点的“键”将是日期,节点中存储的“数据”将是字符串的链表。不过,普通的二叉树不会有多大用处,因为它与链表实现(选项2)没有多大区别,而且效率非常低。我也在考虑这一点。我想,我将使用第二个选项,因为主要目的是使用数据结构。无论如何,感谢您的及时帮助,我相信您可以使用哈希实现map(无需使用STL)。这样,您就可以在O(1)中访问特定in day的任务列表,而不是在使用BST时访问O(logN)