데이터 구조 02 - 선형 구조 1 두 질서 있 는 링크 시퀀스 의 합병
9329 단어 데이터 구조데이터 구조 (저장 성)
이 문 제 는 하나의 함 수 를 실현 하고 두 개의 링크 가 표시 하 는 증가 정수 서열 을 비 체감 의 정수 서열 로 합 쳐 야 한다.
함수 인터페이스 정의:
List Merge( List L1, List L2 );
그 중에서
List
구조 정 의 는 다음 과 같다.typedef struct Node *PtrToNode;
struct Node {
ElementType Data; /* */
PtrToNode Next; /* */
};
typedef PtrToNode List; /* */
L1
와 L2
는 주어진 선두 노드 의 단일 체인 표 로 그 노드 에 저 장 된 데 이 터 는 점점 질서 가 있다.함수 Merge
는 L1
와 L2
를 비 체감 의 정수 서열 로 합 쳐 야 한다.원 시퀀스 의 결점 을 직접 사용 하고 귀 합 된 선두 결점 의 체인 헤더 지침 을 되 돌려 야 한다.심판 테스트 프로그램 샘플:
#include
#include
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
List Read(); /* */
void Print( List L ); /* ; NULL */
List Merge( List L1, List L2 );
int main()
{
List L1, L2, L;
L1 = Read();
L2 = Read();
L = Merge(L1, L2);
Print(L);
Print(L1);
Print(L2);
return 0;
}
/* */
입력 예시:
3 1 3 5 5 2 4 6 8 10
출력 예시:
1 2 3 4 5 6 8 10 NULL NULL
분석 하 다.
먼저 head 기록 L 링크 의 시작 을 만 들 고 두 링크 의 현재 노드 의 데이터 도 메 인 값 을 순환 적 으로 비교 한 다음 에 작은 노드 (tmpLn 으로 기록) 를 링크 L 의 뒤에 L 뒤에 추가 하 는 작업 은 모두 3 단계 입 니 다.
List Merge( List L1, List L2 ){
List L=(List)malloc(sizeof(struct Node));
List head = L; // L
List tmpL1 = L1->Next; //tmpL1->Data
List tmpL2 = L2->Next;
while(tmpL1 && tmpL2){ // L1 L2
if(tmpL1->Data < tmpL2->Data){
L->Next=tmpL1;
tmpL1=tmpL1->Next;
}else{
L->Next=tmpL2;
tmpL2=tmpL2->Next;
}
L=L->Next;
}
if(tmpL1) // L1 , L
L->Next=tmpL1;
if(tmpL2)
L->Next=tmpL2;
L1->Next = NULL; // L1 L2 NULL
L2->Next = NULL;
return head;
}
구덩이 가 많 으 니 조심해 라!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.