2012-09-19 4 views
0

LinkedList을 만들어야합니다. Node이라는 클래스가 int 속성과 Node 속성을 가지고 있습니다. LinkedList에 항목을 내림차순으로 추가 할 수 있어야합니다.LinkedList 만들기 : 순서대로 추가

주어진 숫자가 목록에서 가장 높은 것보다 높으면 목록 시작 부분에 항목을 추가 할 수있는 코드가 있습니다. 가장 낮은 번호와 같은 것. 목록 중간에 Node을 추가하려고하면 문제가 발생합니다. 재귀를 사용해야합니다. 가장 높은 숫자와 가장 낮은 숫자를 찾기 위해 이미 사용했지만, 마지막 경우에 코드를 추가 할 수는 없습니다 (중간에 추가).

나에게 힌트를 줄 수 있습니까? 베이스 케이스가 어떤 것인지 말해 주시겠습니까?

답변

0

그것을 해결 :

Node root = null; 

    public void Add(int data) 
    { 
     Node m = new Node(); 
     m.data = data; 

     if (root == null) 
     { 
      root = new Node(); 
      root.data = data; 
      root.Next = null; 
     } 

     else if (root.Next == null) 
     {      
      if (m.data > root.data) 
      { 
       Node tempRoot = root; 
       root = m; 
       m.Next = tempRoot; 
       tempRoot.Next = null; 
      } 

      else 
      { 
       root.Next = m; 
       m.Next = null; 
      } 
     } 

     else if (m.data > root.data) 
     { 
      m.Next = root; 
      root = m; 
     } 

     else 
     { 
      Node temp = root; 
      Node x = Insert(temp, m); 

      for (; temp != x; temp = temp.Next) ; 
      m.Next = temp.Next; 
      temp.Next = m; 
     } 
    } 

    public Node Insert(Node n, Node insertMe) 
    { 
     if (n.Next == null) 
     { 
      return n; 
     } 

     else 
     { 
      if (insertMe.data >= Insert(n.Next, insertMe).data) 
      { 
       return n; 
      } 

      else 
      { 
       return Insert(n.Next, insertMe); 
      } 
     } 
    }