[검지offer 면접문제 17] 두 개의 서열을 합친 체인표
10778 단어 면접 문제
두 체인 테이블의 단점 값의 크기를 비교하여 귀속적인 방식으로 배열한다.
1 #include <iostream>
2 using namespace std;
3
4 struct ListNode
5 {
6 int val;
7 ListNode *next;
8 ListNode(int v = 0):val(v), next(NULL){}
9 };
10
11 ListNode *SortedListMerge(ListNode *phead1, ListNode *phead2)
12 {
13 if(phead1 == NULL)
14 return phead2;
15 else if(phead2 == NULL)
16 return phead1;
17
18 ListNode *pMergedHead = NULL;
19
20 if(phead1->val < phead2->val)
21 {
22 pMergedHead = phead1;
23 pMergedHead->next = SortedListMerge(phead1->next, phead2);
24 }
25 else
26 {
27 pMergedHead = phead2;
28 pMergedHead->next = SortedListMerge(phead1, phead2->next);
29 }
30
31 return pMergedHead;
32 }
33
34 int main()
35 {
36
37 ListNode *l1 = new ListNode(1);
38 ListNode *h1 = l1;
39 for(int i = 3; i <= 11; i += 2)
40 {
41 ListNode *temp = new ListNode(i);
42 l1->next = temp;
43 l1 = l1->next;
44 }
45
46 ListNode *l2 = new ListNode(2);
47 ListNode *h2 = l2;
48 for(int i = 4; i <= 12; i += 2)
49 {
50 ListNode *temp = new ListNode(i);
51 l2->next = temp;
52 l2 = l2->next;
53 }
54
55 cout<<"List1: ";
56 ListNode *print1 = h1;
57 while(print1 != NULL)
58 {
59 cout<<print1->val<<" ";
60 print1 = print1->next;
61 }
62 cout<<endl;
63
64 cout<<"List2: ";
65 ListNode *print2 = h2;
66 while(print2 != NULL)
67 {
68 cout<<print2->val<<" ";
69 print2 = print2->next;
70 }
71 cout<<endl;
72
73 ListNode *mergeList = SortedListMerge(h1, h2);
74
75 cout<<"ListMerge: ";
76 ListNode *printlist = mergeList;
77 while(printlist != NULL)
78 {
79 cout<<printlist->val<<" ";
80 printlist = printlist->next;
81 }
82 cout<<endl;
83
84
85 }
테스트 결과:
List1: 1 3 5 7 9 11
List2: 2 4 6 8 10 12
ListMerge: 1 2 3 4 5 6 7 8 9 10 11 12
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 프로그래머 면접에서의 다중 스레드 문제 요약wait ()/notify ()/notify All () 의 모든 방법을 호출할 때, 현재 라인이 이 대상의 자물쇠를 얻지 못하면, Illegal MonitorState Exception의 이상을 던집니다. Thre...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.