2011-09-08 4 views
0

C#에서 연결된 목록을 만드는 방법을 배우고 있습니다. 나는 나를 위해 일하지 않는 아래의 코드를 가지고있다. 콘솔에 인쇄 할 모든 노드를 반복하여 아래에있는대로 주 노드를 추가하고 싶습니다.연결된 목록에 여러 노드를 만들고 노드를 반복하는 방법

using System; 

class node 
{ 
    public object data; 
    public node next; 

    public node() 
    { 
     data = null; 
     next = null; 
    } 
    public node(object o) 
    { 
     data = o; 
     next = null; 
    } 
    public node(object data, node next) 
    { 
     this.data = data; 
     this.next = next; 
    }  
} 

class linkedList 
{ 
    private node headNode; 
    private node tailNode; 

    int node_count; 

    public void add(object entry) 
    { 
     if (headNode == null) 
     { 
      node newNode = new node(entry); 
      headNode = newNode; 
      ++node_count; 
     } 
     else 
     { 
      if (node_count == 1) 
      { 
       node newNode = new node(entry, headNode); 
       tailNode = newNode;     
      } 
      else 
      { 
       node newNode = new node(entry, tailNode); 
       tailNode = newNode; 
      } 
      ++node_count; 
     } 
    } 

    public void returnData() 
    { 
     if (headNode.next != null) 
     { 
      while (headNode.next != null) 
      { 
       Console.WriteLine(headNode.data + "\n"); 
      } 
     } 
     else 
      Console.WriteLine("Not Available"); 
    } 
} 

class Exercise 
{ 
    static int Main() 
    { 
     linkedList ll = new linkedList(); 
     ll.add(8); 
     ll.add(2); 
     ll.add(7); 
     ll.add(4); 
     ll.add(9); 
     ll.add(10); 

     ll.returnData(); 

     Console.ReadLine(); 
     return 0; 
    } 
} 
+0

방법 작동하지 않습니까? – BoltClock

+0

컴파일하고 실행할 때 @boltclock을 사용할 수 없다는 문제가 발생합니다. –

+2

자신과 다른 사람들이 코드를 더 쉽게 읽을 수 있도록 제안합니다. .NET 명명 규칙에 따라 시작하십시오. http://msdn.microsoft.com/en-us/library/ us/library/ms229045.aspx 그런 다음 "더 이상 사용할 수 없다"라는 오류보다 더 구체적으로 설명하십시오. 좋은 질문을하는 나의 가이드를 읽으십시오 : http://tinyurl.com/so-hints –

답변

2

귀하의 코드가 완전히 고장 업데이트 결코처럼

는 또한 보인다.

는 여기를

using System; 

class node 
{ 
    public object data; 
    public node next; 

    public node() 
    { 
     data = null; 
     next = null; 
    } 
    public node(object o) 
    { 
     data = o; 
     next = null; 
    } 
    public node(object data, node next) 
    { 
     this.data = data; 
     this.next = next; 
    }  
} 

class linkedList 
{ 
    private node headNode; 
    private node tailNode; 

    int node_count; 

    public void add(object entry) 
    { 
     node newNode = new node(entry); 
     if (headNode == null) 
      headNode = newNode; 
     if (tailNode != null) 
      tailNode.next = newNode; 
     tailNode = newNode; 
     ++node_count; 
    } 

    public void returnData() 
    { 
     node currentNode = headNode; 

     if (currentNode == null) 
      Console.WriteLine("Not Available"); 

     while (currentNode != null) { 
      Console.WriteLine(currentNode.data); 
      currentNode = currentNode.next; 
     } 

    } 
} 

class Exercise 
{ 
    static int Main() 
    { 
     linkedList ll = new linkedList(); 
     ll.add(8); 
     ll.add(2); 
     ll.add(7); 
     ll.add(4); 
     ll.add(9); 
     ll.add(10); 

     ll.returnData(); 

     return 0; 
    } 
} 
0

데이터를 인쇄하려면 목록을 순회하기 위해 while (headNode.next != null)을 수행해야합니다. 당신이 node.next 중 하나

if (node_count == 1) // this seems unnecessary. 
{ 
    node newNode = new node(entry, headNode); 
    tailNode = newNode; 
    //should be node.next = newnode;     
} 
+0

죄송합니다. 업로드하기 전에 코드를 편집하고 있었는데 실수로 그 부분을 뭔가 다른 것으로 생각해서 삭제했습니다. 그래도 내 문제는 해결되지 않습니다. 지금 내 질문을 편집하여 –

1

를 실행하는 데 필요한 최소한의 변경을의 당신이 조금 돌아 서서 이동 : D

첫째

모든 클래스 이름이 uppercap 시작 sould를 노드 (안 노드)와 LinkedList의 (안 LinkedList의) 그래서 . 당신이 원하는 경우

이제이 기능을 사용할 수 있습니다하지만 u는 하나의 노드 목록을 반환하는 ... 당신이 incorectly 노드를 추가하는 beacuse하려고하면이 작동하지 않습니다 ..

public void returnData() 
    { 
     if (tailNode.next != null) 
     { 
      Node currentNode = tailNode; 
      while (currentNode != null) 
      { 
       Console.WriteLine(currentNode.data + "\n"); 
       currentNode = currentNode.next; 
      } 
     } 
     else 
      Console.WriteLine("Not Available"); 
    } 

을하지만, 이에 기능을 추가 LinkedList의를 변경할 수있는보다 일반 고전 LinkedList의 ...

public void add(object entry) 
    { 
     if (headNode == null) 
     { 
      Node newNode = new Node(entry); 
      headNode = newNode; 
      ++Node_count; 
     } 
     else 
     { 
      if (Node_count == 1) 
      { 
       Node newNode = new Node(entry); 
       headNode.next = newNode; 
       tailNode = newNode;     
      } 
      else 
      { 
       Node newNode = new Node(entry); 
       tailNode.next = newNode; 
       tailNode = newNode; 
      } 
      ++Node_count; 
     } 
    } 

과에 returnData ...

public void returnData() 
    { 
     if (headNode.next != null) 
     { 
      Node currentNode = headNode; 
      while (currentNode != null) 
      { 
       Console.WriteLine(currentNode.data + "\n"); 
       currentNode = currentNode.next; 
      } 
     } 
     else 
      Console.WriteLine("Not Available"); 
    } 
u는 추가 질문이있을 경우

당신이 추가 기능을 수정할 수 있습니다 목록의 전면에 노드를 추가 할 경우이 코드는 목록의 마지막에 노드를 추가합니다 ..

희망이 그냥 부탁하는 데 도움이

관련 문제