2011-04-27 4 views
0

에 삽입 할 때 단 하나의 연결된 목록을 정렬하십시오. C++과 관련하여 전 세계에서 가장 기본적인 사람입니다. 괜찮 으면 도움을 줄 수 있는지 궁금합니다. 노드에서 정렬을 수행하려고하는 임은 istream을 읽었을 때와 마찬가지로 읽혀집니다. 웹의 코드는 매우 복잡하며이를 달성하기위한 기본적인 방법이 있는지 궁금합니다. 여기 istream C++

내 읽기 방법이며, 지금까지 큰 인 IStream을로 읽어하지만 지금은 그것 읽기로 정렬 할 필요가있다. 머리가 하하에게

void ListClass::Read(istream& r) 
{ 
    char c[13]; 
    r >> c; 
    r >> numberOfInts; 

    Node *node = new Node(); 
    head = node; 

    for(int i = 0; i < numberOfInts; i++) 
    { 
     r >> node->data; 
     cout << node->data << endl; 
     node->next = new Node; 
     node = node->next; 
    } 

} 

아파하고 여기에 내 노드 클래스입니다 내 헤더 파일이이 문제에 대해 제대로 생각을 얻는 경우에

class Node 
{ 
public: 
    Node() {} //default constructor 
    Node(int d, Node* q = 0) : data(d), next(q) {} //constructor with parameters data and next 
    int data; //holds data in node 
    Node* next;//pointer to next node 
}; 
+0

이미 만난 방법 ("웹상의 코드")은 무엇입니까? (단지 사람들이 당신에게 같은 것을 추천하는 것을 막기 위해) – jonsca

+0

하나는 템플릿 이었고 이중 연결된 목록과 몇 개의 다른 사람에게 더 적합했지만 그 사람은 설명하는 사람에게조차 혼란 스러웠습니다. 기본적으로 메신저 일종의 삽입 유형을 찾고 있지만 내가 그것을 생각할 때 지나치게 복잡하지 않는 한 많은 것을 제외하면 –

+0

@jonsca 죄송합니다. –

답변

0

참조 : 카드가 얼굴의

당신은 갑판으로 시작합니다. 카드 덱을 분류하고 싶지만 이상한 규칙을 따라야합니다.

상단 카드 만 볼 수 있도록 분류되지 않은 카드를 배치하십시오. 첫 번째 카드를 정렬 더미로 이동하여 시작하십시오 (한 카드는 자동으로 정렬 된 순서로 진행됩니다).

다음 정렬되지 않은 카드를보십시오. 상단 정렬 카드보다 크면 (또는 더 작아지면) 상단 정렬 카드를 세 번째 더미로 이동하십시오. 새 카드가 다음 정렬 된 카드보다 작거나 정렬 된 더미가 비어있을 때까지 카드를 하나씩 세 번째 더미로 계속 이동 한 다음 정렬되지 않은 카드를 정렬 된 더미로 이동하십시오. 세 번째 더미에서 정렬 된 더미까지 카드를 하나씩 뒤로 이동하십시오.

정렬되지 않은 파일이 비어있을 때까지 이전 단계를 반복하십시오.

+0

나는 당신의 언어를 좋아한다. 나는 이것을 논리적으로 생각할 것이다. –