复制/复制另一个链表

时间:2016-10-31 21:25:27

标签: c#

基本上我有一个小问题。我似乎无法让这个工作。我到处都看。我正在尝试使用我的Concat方法复制列表

<h2>Table with no header</h2>
<table>
  <tbody>
    <tr>
      <td>First column - bold</td>
      <td>Second column</td>
    </tr>
    <tr>
      <td>First column - bold</td>
      <td>Second column</td>
    </tr>
  </tbody>
</table>

<h2>Table with a header</h2>
<table>
  <thead>
    <tr>
      <th>Header</th>
      <th>Header</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>First column - not bold</td>
      <td>Second column</td>
    </tr>
    <tr>
      <td>First column - not bold</td>
      <td>Second column</td>
    </tr>
  </tbody>
</table>

哪种方法正常。

但是,我对我的复制方法没有任何好运:

public void Concat(LinkListGen<T> list2)
{
    LinkGen<T> temp = list2.list;
    while (temp != null)
    {
        AppendItem(temp.Data);
        temp = temp.Next;
    }
}

我知道这段代码可能很愚蠢,我只是在改变编码/试验和尝试。

执行代码时,不会显示任何内容。

public void Copy(LinkListGen<T> list2)
{
    LinkGen<T> temp = list2.list;

    while (temp != null)
    {
        Concat(list2);
        AppendItem(list2.list.Data);
        temp = temp.Next;
    }
}

基本上我想要这样的输出(可能以错误的顺序键入数字):

list2.AddItem(56);
list2.AddItem(88);
list2.AddItem(17);

list.AddItem(40);
list.AddItem(11);
list.AddItem(77);

list3.Copy(list2);
list3.Copy(list);

System.Console.WriteLine("Copy List" + list3.DisplayItems());

谢谢。

编辑 - 我是个白痴,忘记了AppendItem方法。

Copy List 56 88 17 40 11 77

编辑 -

public void AppendItem(T item)
{
    LinkGen<T> temp = list;
    if (list == null)
    {
        new LinkGen<T>(item, null);
    }
    else
    {
        while (temp.Next != null)
        {
            temp = temp.Next;
        }
        temp.Next = new LinkGen<T>(item, null);
    }
}

}

    class LinkGen<T>
{
    private T data;
    private LinkGen<T> next;

    public LinkGen(T item)
    {
        data = item;
        next = null;
    }
    public LinkGen(T item, LinkGen<T> list)
    {
        data = item;
        next = list;
    }
    public LinkGen<T> Next
    {
        set { this.next = value; }
        get { return this.next; }
    }

    public T Data
    {
        set { this.data = value; }
        get { return this.data; }
    }
}

2 个答案:

答案 0 :(得分:1)

建议更正

class LinkListGen<T> where T : IComparable
{
    private LinkGen<T> list;
    public LinkListGen() {  }

    private LinkGen<T> LastNode ()
    {
        var temp = list;
        while (temp != null && temp.Next != null)
            temp = temp.Next;
        return temp;
    } 

    public void AppendItem(T item)
    {
        if (list == null)
            list = new LinkGen<T>(item, null);
        else
        {
            LinkGen<T> temp = LastNode();
            temp.Next = new LinkGen<T>(item, null);
        }
    }

    public void Concat(LinkListGen<T> list2)
    {
        if (list2 == null)
            return;
        LinkGen<T> temp = list2.list;
        while (temp != null)
        {
            AppendItem(temp.Data);
            temp = temp.Next;
        }
    }

    public void Copy(LinkListGen<T> list2)
    {
        Concat(list2);
    }

    class LinkGen<T2>
    {
        public LinkGen(T2 item): this(item, null) { }
        public LinkGen(T2 item, LinkGen<T2> list)
        {
            Data = item;
            Next = list;
        }

        public LinkGen<T2> Next { set;  get; }
        public T2 Data { set ; get ; }
    }
}

答案 1 :(得分:0)

应答 -

  public void Copy(LinkListGen<T> list2)
    {

        LinkGen<T> temp = list2.list;
        while (temp != null)
        {
            AppendItem(temp.Data);
            temp = temp.Next;
        }
    }

如果有人遇到过同样的问题。他们终于成了一个解决方案。是的,我知道....我是个白痴!