203MergeList

메모: 접미사 이름 에 따라 새 파일 을 엄 격 히 만들어 야 합 니 다.
. h 를 누 르 면 파일 을 만 들 고 나중에. cpp 파일 로 간단하게 이름 을 바 꾸 면 컴 파일 에 오류 가 발생 합 니 다.
순서 표 의 실현 은 4 개의 파일 을 포함 합 니 다:
    c1. h 는 예비 처리 명령 입 니 다. /코드 는 블 로그 201 SqList 와 같 습 니 다.
    c2 - 1. h 는 SqList 의 데이터 구조 입 니 다. /코드 는 블 로그 201 SqList 와 같 습 니 다.
    bo2 - 1. cpp 는 SqList 의 기본 조작 함수 (basic operations 줄 임 말 bo) 입 니 다. /코드 는 블 로그 201 SqList 와 같 습 니 다.
    algo. cpp 는 실현, 테스트 함수 입 니 다.
//algo.cpp
#include "C:\Users\Administrator\Documents\Visual Studio 2013\Projects\201SqList\SqList\c1.h"
#include "C:\Users\Administrator\Documents\Visual Studio 2013\Projects\201SqList\SqList\c2-1.h"
#include "C:\Users\Administrator\Documents\Visual Studio 2013\Projects\201SqList\SqList\bo2-1.cpp"
using namespace std;

void MergeList(SqList La, SqList Lb, SqList &Lc)
{
	ElemType *pa, *pb, *pa_last, *pb_last, *pc;
	pa = La.elem;
	pb = Lb.elem;
	pa_last = La.elem + La.length - 1;
	pb_last = Lb.elem + Lb.length - 1;
	Lc.length = Lc.listsize = La.length + Lb.length;
	Lc.elem = (ElemType *)malloc((Lc.listsize*sizeof(ElemType)));
	if (!Lc.elem)
		exit(OVERFLOW);
	pc = Lc.elem;

	while (pa <= pa_last && pb <= pb_last)
	{
		if (*pa < *pb)
			*pc++ = *pa++;
		else if (*pa = *pb)
			*pc++ = *pa++, *pb++, Lc.length--;
		else
			*pc++ = *pb++;
	}

	while (pa <= pa_last)
		*pc++ = *pa++;
	while (pb <= pb_last)
		*pc++ = *pb++;
}

int main()
{
	SqList La, Lb, Lc;

	int a[4] = { 1,2,3,4}, b[7] = {2,4,6,8,10,12,14};

	InitList(La);
	for (int i = 0; i < 4; i++)
		ListInsert(La, i + 1, a[i]);

	InitList(Lb);
	for (int i = 0; i < 7; i++)
		ListInsert(Lb, i + 1, b[i]);
	
	ListTraverse(La);
	ListTraverse(Lb);
	MergeList(La, Lb, Lc);
	ListTraverse(Lc);

	cin.get();
	return 0;
}

좋은 웹페이지 즐겨찾기