0

我有一个链表,它添加了一个像树一样的对象,下面是打印输出的 LinkedList nodeList = new LinkedList();

(结果 A)

1 : Tester Meeting
2 : Adminstrative & Operational 
3 : Functional Committees
4 : Aduit Committee
9 :    Supporting Services Development
8 :    Medical Services Development 
7 :    Information Technology Services 
6 :    Human Resources Committee
15 :          test2-2
14 :       test2
13 :          test1-1
12 :       test1
5 :    Finance Committee
10 : Regional Advisory Committees
11 : Board Workshop

(结果B)以下应该是正确的顺序

Tester Meeting
Adminstrative & Operational 
Functional Committees
Aduit Committee
   Finance Committee
      test1
         test1-1
      test2
         test2-2
   Human Resources Committee
   Information Technology Services 
   Medical Services Development 
   Supporting Services Development
Regional Advisory Committees
Board Workshop

所以,我想颠倒(ResultA)的审计委员会子节点的顺序输出与ResultB相同的结果,有没有什么方法可以对链表的特定节点进行排序?

4

2 回答 2

2

没有。链表除了项目创建的顺序之外没有排序顺序的概念。它意味着快速遍历和添加许多项目。我不确定这种数据结构是否完全适合您的需求。

我不确定你的要求是什么。也许如果您能列出要求,我们可以提出一些建议。

于 2012-10-17T09:10:05.123 回答
0

从您描述的内容来看,树结构看起来更合适。

这是关于树的遍历。这是关于你是从左到右还是从右到左遍历孩子:

类程序 { 静态无效 Main(string[] args) { 节点 rootNode = new Node(); rootNode.Name = "根"; 节点 node1 = new Node(); node1.Name = "孩子 1";

    Node node2 = new Node();
    node2.Name = "child 2";

    rootNode.Children.Add(node1);
    rootNode.Children.Add(node2);

    Node node3 = new Node();
    node3.Name = "child 3";



    node1.Children.Add(node3);


    Traverse(rootNode);

    Console.WriteLine("Reverse: ");

    TraverseReverse(rootNode);

}

private static void Traverse(Node node)
{
    Console.WriteLine(node.Name);
    for (int index = 0; index < node.Children.Count;index++ )
    {
        Traverse(node.Children[index]);
    }            
}

private static void TraverseReverse(Node node)
{
    Console.WriteLine(node.Name);
    for (int index = node.Children.Count-1; index >=0; index--)
    {
        TraverseReverse(node.Children[index]);
    }
}     

}

输出:

root
child 1
child 3
child 2
Reverse:
root
child 2
child 1
child 3
于 2012-10-17T09:17:01.143 回答