我知道在链表中有一个头节点和一个尾节点。好吧,对于我的数据结构分配,我们假设创建一个引用北、南、东和西节点的链接矩阵。我不知道如何实现这一点。困扰我的一个持续问题是头节点和尾节点。用户输入行数和列数。那么我是否应该在每行的开头有多个头节点,在每行的末尾有多个尾节点?如果是这样,我应该将多个头/尾节点存储在一个列表中吗?
谢谢。
有多种解释方法,但一种选择是:
左上角有一个"头"节点,右下角有一个"尾"节点。然后会有行头、行尾、列头和列尾节点,但这些节点都可以从整体头和尾部访问,所以你不需要跟踪它们,它们已经是链接矩阵的一部分,所以它们不需要成为单独的链表的一部分。
(当然,构建零的 RxC 矩阵的函数可能会有代表当前行的头部/尾部的局部变量,但这不是问题。
这实际上取决于您想要/需要有效支持的选项。
例如,只有一个头部指针的单向链表可以是堆栈(在头部插入和删除)。 如果添加尾部指针,则可以在任一端插入,但只能在头部(堆栈或队列)删除。 双向链表可以支持在任一端插入或删除 (deque)。 如果您尝试实现数据结构不是为您设计的操作,则会产生 O(N) 损失。
因此,我会从指向 (0,0) 元素的单个指针开始,然后开始处理教师要求的操作。 您可能会发现您需要其他指针,但您可能不需要。 我的猜测是,你用一个头指针就可以了。