单链表及其节点
链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此每个单元至少有两个域,
一个域用于数据元素的存储,另一个域是指向其他单元的指针。
这里具有一个数据域和多个指针域的存储单元通常称为 结点(node)
链表的第一个结点和最后一个结点,分别称为链表的 首结点和 尾结点。
尾结点的特征是其 next 引用为空(null)。
链表中每个结点的 next 引用都相当于一个指针,指向另一个结点,
借助这些 next 引用,我们可以从链表的首结点移动到尾结点。
在单链表中通常使用 head 引用来指向链表的首结点,由 head 引用可以完成对整个链表中所有节点的访问。
单链表的一个重要特性就是只能通过前驱结点找到后续结点,而无法从后续结点找到前驱结点。
代码实现
实现接口
namespace _001_线性表
{
interface IListMy<T>
{
int GetLength();
void Clear();
bool IsEmpty();
void Add(T item);
void Insert(T item, int index);
T Delete(int index);
T this[int index] {
get; }//索引器
T GetEle(int index);//根据索引得到元素
int Locate(T item);//根据元素得到索引
}
}
实现节点
namespace _001_线性表.单链表
{
/// <summary>
/// 单链表的结点
/// </summary>
class Node<T>
{
private T data;//存储数据
private Node<T> next;//指针,指向下一个元素
public Node()
{
Data = default(T);
Next = null;
}
public Node(T value)
{
this.Data = value;
Next = null;
}
public Node(Node<T> next