데이터 구조 학습 - 질서 있 는 링크 의 통합

12143 단어 데이터 구조
재 귀적 호출 이 간단 하 다.
약간 정렬 된 병합 부분 같 죠?
 
 
vs 로 만 든 프로젝트 이기 때문에 주 함 수 는tmain。
 
 1 //   .cpp :              。
 2 //
 3 
 4 #include "stdafx.h"
 5 
 6 
 7 typedef struct Node {
 8     int data;
 9     struct Node *next;
10 
11 } LinkList;
12 
13 
14 //          :             :                
15 LinkList * combie(LinkList *l1, LinkList * l2) {
16 
17     LinkList * p=NULL;
18 
19     if (l1==NULL && l2==NULL)
20     {
21         p = NULL;
22     }
23     if (l1==NULL&&l2!=NULL)
24     {
25         p = (LinkList *)malloc(sizeof(LinkList));
26         p->data = l2->data;
27         p->next = combie(NULL, l2->next);
28 
29     }
30 
31     if (l2 == NULL&&l1 != NULL)
32     {
33         p = (LinkList *)malloc(sizeof(LinkList));
34         p->data = l1->data;
35         p->next = combie(l1->next,NULL);
36 
37     }
38     if (l1!=NULL && l2!=NULL)
39     {
40         p = (LinkList *)malloc(sizeof(LinkList));
41 
42         p->data = l1->data <= l2->data ? l1->data : l2->data; 
43         p->next = combie(l1->data <= l2->data ? l1->next : l1, l1->data <= l2->data ? l2 : l2->next);
44     
45     }
46     return p;
47 }
48 
49 
50 
51 //             
52 LinkList * create(int a[], int n) {
53     LinkList *h = NULL, *p, *pre = NULL;
54     for (int i = 0; i < n; i++)
55     {
56         p=(LinkList *)malloc(sizeof(LinkList));
57         p->data = a[i];
58         if (pre) pre->next = p;
59         pre = p;
60         if (i == 0) h = p;
61         if (i == n - 1) p->next = NULL;
62         
63     }
64     return h;
65 
66 
67 }
68 
69 
70 //           
71 void display(LinkList *list) {
72     LinkList *p = list;
73     while (p != NULL)
74     {
75         cout << p->data << " ";
76         p = p->next;
77     }
78     cout << endl;
79 
80 }
81 
82 int _tmain(int argc, _TCHAR* argv[])
83 {
84     int a []= { 1, 2, 10, 80,500 };
85     LinkList *l1 = create(a,5);
86     display(l1);
87     int b[] = { 0,4, 5, 100, 177,250 };
88     LinkList *l2 = create(b, 6);
89     display(l2);
90     LinkList * p = combie(l1, l2);
91     display(p);
92     system("pause");
93     return 0;
94 }

 stdafx. h 의 내용 은 매우 간단 하 다.
// stdafx.h :              ,
//             
//           
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>



// TODO:                 
#include <iostream>
#include <cstdlib>
using namespace std;

좋은 웹페이지 즐겨찾기