我是链表的新手,我将制作一个电话簿程序。我需要将联系人信息存储在链接列表中:姓氏、名字、街道地址、城市、州、邮政编码和电话号码。但在我把它们存储在列表中后,我想按姓氏对每个联系人进行排序。我不确定是应该创建一个标准的链表类还是制作一个链表模板?编辑:我的作业需要使用链表。我不太理解链表。我认为手动创建它会帮助我理解。
据我所知,应该没有必要(除非出于兴趣或特殊要求)手动实现链表,因为它已经包含在标准库中,如本文所述;显然还实现了排序。
对于电话簿来说,链表通常不是一个好选择。您可能希望对列表进行排序以加快查找速度,但由于缺少随机访问迭代器,链表仍然需要O(n)。我的建议是,如果你想学习如何使用std::vector
或实现类似的东西。
首选std::list
。它已经存在,经过了很好的测试,并且已经提供了一种sort()
方法:
auto l = std::list<Contact>{};
// fill list
l.sort([](const Contact& first, const Contact& second){
return std::less(first.lastName, second.lastName);
});
根据经验,大多数时候使用标准模板比尝试重新发明轮子要好。
顺便说一下:如果链表真的是满足您需求的最佳容器,请重新考虑。有时是,但通常不是。