合并两个已排序的链表
input: 1->3->5; 2->4->6
output: 1->2->3->4->5->6
class ilistnode { public: ilistnode(int value, ilistnode* next = NULL) :Value(value), Next(next) { } int getvalue() const { return Value; } ilistnode* getnext() const { return Next; } void setvalue(int value) { Value = value; } void setnext(ilistnode* next) { Next = next; } private: int Value; ilistnode* Next; }; ilistnode* mergelist(ilistnode* list1, ilistnode* list2) { if (list1 == NULL) return list2; else if (list2 == NULL) return list1; ilistnode* result = new ilistnode(1); if (list1->getvalue() < list2->getvalue()) { result = (list1); result->setnext(mergelist(list1->getnext(), list2)); } else { result = (list2); result->setnext(mergelist(list1, list2->getnext())); } return result; }