数据结构 - 链表合并操作
发布时间
阅读量:
阅读量
今日有同学在群内询问如何将两个有序链表进行合并,本人尝试编写了相关代码。
递归方法较为直观,且不易出现错误;而采用非递归方式实现时,代码的可读性会有所下降,并且更容易产生逻辑错误。此处提供核心代码片段。
需要特别指出的是,若处理的是双向链表,则实现过程会更加复杂,需同时对每个节点的两个指针进行维护。为避免操作失误,强烈建议在双向链表中增加头尾的哨兵节点。
链表节点的定义如下:
template <typename Comparable>
struct Node {
Comparable element;
Node * next;
Node(const Comparable &e, Node *n = nullptr)
: element{ e }, next{ n }
{}
};
运用递归机制实现数据的整合
template <typename Comparable>
Node<Comparable> *
merge(Node<Comparable> * n1, Node<Comparable> * n2);
/** * assume n1 < n2
全部评论 (0)
还没有任何评论哟~
