단방향 연결리스트 패킷

문제점 :
  [TITLE] 헤드 노드 형 헤드의 소정 값은 단방향 링크리스트 노드는 소정의 정수 피벗을 제공하는 정수이다.
    목록을 조정하는 기능을 구현리스트가 좌측 선회 부 조정한다하는 노드의 값 이하이고,
    선회의 중간 부분은 상기 노드의 값과 동일한, 오른쪽 부분은 피벗 노드보다 크다.
    이 요구 사항뿐만 아니라, 조정 노드 주문 더 이상 필요가 없다.
    목록 9-> 0-> 4-> 5-> 예 1 피봇 = 3.
    목록> 5 1-> 0-> 3-> 9- 조절 될 수
    있을 수있는 0-> 1-> 9-> 5-> 4.
    즉, 좌측부는 노드 (3)을 충족 미만이고,
    중간 부분 (이 경우에는이 부분이 비어있는) 노드 3과 동일하고,
    우측 부분은 노드가 3보다 클 수있다. 내부 노드 차수의 부분에 필요하지 않다.
  : 고급
    원래 문제의 요구 사항에 후 다음 두 가지 요구 사항을 추가합니다. 왼쪽에서 세 가지 요구의 오른쪽 부분이 순서 할 내부
    왼쪽에서 오른쪽 순서로 노드의 각 부에서 요구 목록을 원래의 노드의 순서와 일치한다.
    목록 9-> 0-> 4-> 5-> 예 1 피봇 = 3. 이 목록은 0-> 1-> 9-> 4-> 5 조정된다.
    원래 문제의 요구 사항을 충족하는 동안, 노드의 좌측 우측 0,1 왼쪽에서. 이전에 제 1 표시 후,리스트 0 연결된 발생,
    중간 섹션은 본 실시 예에서 설명하지 비어; 노드 오른쪽 오른쪽 부분 9,4,5 왼쪽에서. 원래의 목록은 지난 5 알, 다음, 첫 9 표시 4 나타났다.

    체인 길이는 N, O (N)를 달성하기 위해 요구 된 시간 복잡도 경우, 요청 된 추가 공간 복잡도 O를 달성하기 위해 (1).


해결책 :
    소수 PR 간부의 수를 저장하기 위해, 두 개의 포인터를 사용하여, PR 앞으로 수와 동일한 수를 저장하도록 운영 , p는 수영을 통과하는 포인터

 

암호:

  

1 #INCLUDE <iostream>
 2  
3  사용  스페이스 성병;
4  
5  구조체 노드
 6  {
 7      INT의 발;
8      노드 * 다음;
9      노드 ( INT를 A = 0 ) : 발 (a), 다음 (NULL)} {
 10  };
11  
12  공극 파티션 (노드 * 헤드 CONST의  INT의 NUM)
 13  {
 14      노드 PR *, * P;
15      p = PR = 헤드;
16 일      동안 (P-> 다음)
17      {
 18          의 경우 (P->하는 next-> 발 < NUM)
 19          {
 20              노드 * Q;
(21)              Q = PR-> 다음;
22              PR-> 다음 = P-> 다음;
23              P-> 다음 = P->하는 next-> 다음;
24              PR = PR-> 다음;
25              PR-> 다음 = Q;
26              // P2 = P1; 
(27)          }
 (28)          그 밖의  경우 (P->하는 next-> 브로 == NUM)
 29          {
 30              노드 * Q;
(31)              Q = PR-> 다음;
32              PR-> 다음 = P-> 다음;
33              P-> 다음 = P->하는 next-> 다음;
34              PR->하는 next-> 다음 = Q;
35          }
 36          
37              p = P -> 다음;
38      }        
 39  
40  }
 41  
42  
43  공극 테스트 ()
 44  {
 45      INT [η] = { 7 , 2 , 8 , 1 , 4 , 5 ,4 , 6 };
46      노드 * = 헤드 새로운 노드 (- 1 );
47      노드의 * p = 헤드;
48      (자동 N : a)
 49      {
 50          노드 * Q = (N) 노드;
51          P-> 다음 = Q;
52          p = Q;
53      }
 54      P-> 다음 = NULL;
55  
56      p = 헤드 -> 다음;
57      COUT << " 原链表为: " ;
58      반면 (p)
59      {
 60          COUT << P-> 발 << " -> " ;
61          p = P -> 다음;
62      }
 63  
64      분할 (헤드, 4 );
65      p = 헤드 -> 다음;
66      COUT << ENDL << " ******************* " << ENDL << " 分部分后的链表为: " ;
67      반면 (p)
 68      {
 69          COUT << P-> 발 << " -> " ;
다음 것;
71      }
 72      COUT << ENDL << " ============================= " << ENDL;
73 }

 

HTTPS : //www.cnblogs.com/zzw1024/p/10989395.html 재현

추천

출처blog.csdn.net/weixin_34336526/article/details/93252298