using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
LinkHead<int> node = new LinkHead<int>();
node.AddLast(1);
node.AddLast(5);
node.AddLast(6);
node.Display();
}
}
class Node<T>
{
public T Date { get; internal set; }
public Node<T> Next { get; internal set; }
public Node(T date)
{
this.Date = date;
}
public Node()
{
//……
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class LinkHead<T>
{
public Node<T> Head { get; private set; }
public void AddLast(T item)
{
Node<T> p = new Node<T>(item);
Node<T> q = new Node<T>();
if(Head==null)
{
Head = p;
return;
}
q = Head;
while(q!=null)
{
q = q.Next;
}
q = p;
}
public void Display()
{
Node<T> a = new Node<T>();
a = Head;
while(a!=null)
{
Console.WriteLine(a.Date);
a=a.Next;
}
}
}
}
逻辑有问题,单链表的第一个节点你就断了,用我的代码试试:
class LinkHead<T>
{
public Node<T> Head { get; private set; }
public Node<T> Foot { get; private set; }
public void AddLast(T item)
{
Node<T> p = new Node<T>(item);
if (Head == null)
{
Head = p;
Foot = Head;
return;
}
else
{
Foot.Next = p;
Foot = p;
}
}
public void Display()
{
Node<T> a = Head;
do
{
Console.WriteLine(a.Date);
a = a.Next;
} while (a != Foot.Next);
}
}
逻辑有问题,单向链表的第一个节点你就断了,用我的代码试试:
class LinkHead<T>
{
public Node<T> Head { get; private set; }
public Node<T> Foot { get; private set; }
public void AddLast(T item)
{
Node<T> p = new Node<T>(item);
if (Head == null)
{
Head = p;
Foot = Head;
return;
}
else
{
Foot.Next = p;
Foot = p;
}
}
public void Display()
{
Node<T> a = Head;
do
{
Console.WriteLine(a.Date);
a = a.Next;
} while (a != Foot.Next);
}
}
怎么调用的
大佬,第一处画横线的地方我修改成q.Next!=null,第二处修改成q.Next=p,这样就能成功输出了,这是为什么呢?