두 개의 단일 체인 테이블의 통합 (C 언어 구현)
5586 단어 데이터 구조와 알고리즘
#include <stdio.h>
#include <stdlib.h>
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(); // 1
L2 = Read(); // 2
L = Merge(L1, L2);
Print(L);
Print(L1);
Print(L2);
return 0;
}
List Merge( List L1, List L2 )
{
List L, p1, p2, r ;
p1 = L1->Next;
p2 = L2->Next;
L = (List)malloc(sizeof(struct Node));
L->Next = NULL;
r = L;
while (p1 && p2){
if(p1->Data < p2->Data){
r->Next = p1;
r = p1;
p1 = p1->Next;
}
else{
r->Next = p2;
r = p2;
p2 = p2->Next;
}
}
if(p1)
r->Next = p1;
else
r->Next = p2;
L1->Next = NULL;
L2->Next = NULL;
return L;
}
List Read()
{
int n, i;
List L, p, s;
scanf("%d",&n);
L = (List)malloc(sizeof(struct Node));
L->Next = NULL;
p = L;
for(i = 0;i < n; ++i){
s = (List)malloc(sizeof(struct Node));
scanf("%d",&s->Data);
s->Next = p->Next;
p->Next = s;
p = s;
}
return L;
}
void Print(List L)
{
List p;
p = L->Next;
if (L->Next==NULL)
{
printf("NULL");
}
while(p)
{
printf("%d ", p->Data);
p = p->Next;
}
printf("
");
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무의 깊이가 두루 다니다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.