1. 程式人生 > >C++將兩個遞增連結串列 合併成 一個遞增連結串列 不佔用額外的空間

C++將兩個遞增連結串列 合併成 一個遞增連結串列 不佔用額外的空間

/*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;


//1.將兩個遞增有序連結串列合併成一個有序的遞增連結串列,不佔用其他的空間,表中無重複資料
status mergeList(LinkList &la, LinkList &lb, LinkList &lc) {
	LinkList pa, pb, pc;
	pa = la->next;
	pb = lb->next;
	lc = pc = la;
	while (pa&&pb) {
		if (pa->data < pb->data) {
			pc->next = pa;
			pc = pa;
			pa = pa->next;
		}
		else if (pa->data > pb->data) {
			pc->next = pb;
			pc = pb;
			pb = pb->next;
		}
		else { //pa->data==pb->data
			pc->next = pa;
			pc = pa;
			pa = pa->next;
			pb = pb->next;
		}
	}
	pc->next = pa ? pa : pb;
	delete lb;
	return ok;
}