C++ merges two increasing singly linked lists into a decreasing singly linked list without occupying the original space

/*create by tyy*/
#include <iostream>
#include <string>
using namespace std;
#define ok 1
#define error -1
#define overflow -2

typedef int status;
typedef int ElemType;
typedef struct LNode {
	ElemType data;
	LNode *next;
}LNode, *LinkList;
//2.将两个递增的有序链表合并成一个递减的有序链表,允许重复
status mergeList1(LinkList &la, LinkList &lb, LinkList &lc) {
	LinkList pa, pb, pc;
	pa = la->next;
	pb = lb->next;
	lc = pc = la;
	pc->next = NULL;

	while (pa&&pb) {
		LinkList pt;
		if (pa->data < pb->data) {
			pt = pa;
			pa = pa->next;
		}
		else {
			pt = pb;
			pb = pb->next;
		}

		pt->next = pc->next;
		pc->next = pt;

	}
	if (pa == NULL) {
		pa = pb;
	}

	LinkList pt;
	while (pa) {
		pt = pa;
		pa = pa->next;
		pt->next = pc->next;
		pc->next = pt;

	}


	delete lb;
	return ok;
}

 

Guess you like

Origin blog.csdn.net/qq_37790902/article/details/83622795