面试题:合并升序排序的链表并去重

summary

:

这是我去人人面试的时候遇到的题,当时我写出来健壮性不好,立马就被刷了。

题目

给出两个单链表,升序排序好了,要求合并两个链表,合并之后还是升序排序,而且去重。 链表的节点结构如下:

struct Node {

: int value;

struct Node \*next;

};

分析

没啥好分析,合并加去重,关键是要注意很多特殊情况,要写多一些测试用例。这里,我 用的是递归的方式实现,每次取得两个链表比较之后的头节点,并放到合并之后的链表的 后面。

我的代码

::: {.code-include lexer="cpp"} ./merge_sorted_list.cpp :::

使用了Boost的单元测试框架,链接的时候要加上 -lboost_unit_test_framework 参数。