我是一名嵌入式软件工程师。我从未使用过诸如树,图表或链表之类的数据结构。我只使用循环缓冲区,数组等。我很想知道嵌入式系统数据结构的哪一部分是明确使用的树,图和链表。有没有具体的例子?
答案 0 :(得分:7)
您使用的数据结构与运行软件的 (即微控制器与PC)无关。它更多地与你的软件正在做什么有关。
您在快餐店中看到的触摸屏收银机可能完全在微控制器上运行。或者它可能是一个Windows应用程序(我之前看过麦当劳的蓝屏)。
话虽这么说,像树木和图形这样的结构经常被用在机器人中,以规划路线并记住它们去过的地方。 3D打印机广泛使用这些结构,并且通常在嵌入式环境中运行。 PC将创建要打印的对象切片的各种图形,然后将它们放在树中。然后打印机中的微控制器遍历树并打印图形。
链接列表可以在类似的地方用于循环缓冲区或数组(或堆栈或队列),其中需要更多的灵活性。我经常看到它们用于任务调度算法。它们也可用于上述树木和图表中。
答案 1 :(得分:2)
您必须了解每个特定数据结构的优点 - 即每个特定的数据存储,组织或访问问题都要解决。一旦你理解了对于一些常见的数据结构的选择,你将能够识别出可能有利于人们使用的情况。
您可能通过缺乏知识或经验或通过次优解决方案的可接受性和简单性来实现使用次优数据结构的系统。例如,如果对简单阵列的详尽搜索符合性能要求;因为要么阵列足够小,处理器足够快或者实时要求足够宽松,那么你可能合法地选择不使用更适合高效和确定性搜索的数据结构来复杂化。尤其是因为,例如,调试器非常适合显示数组内容,但通常不了解更高级别的数据结构。
另一方面,您可能已经使用了其他数据结构而不是您提到的数据结构,而不是意识到这一点。堆栈(FILO)和队列(FIFO)在许多嵌入式系统中很流行,如果你没有使用它们,我会感到惊讶,即使它们是基于数组的临时实现。