C#模拟链表数据结构的实例解析

2019-12-30 12:22:54王振洲
易采站长站为您分析C#模拟链表数据结构的实例解析,包括队双向链表的模拟方法,例子中队链表的操作也有很好的说明,需要的朋友可以参考下  

写在前面

模块化编程是大多数初学者必经之路,然后可能你走向了结构化编程,链表是一种典型结构模式,它的出现克服了数组必须预先知道大小的缺陷,听不懂?你只需要记住,链表结构非常牛叉就可以了,学习这种结构对我们的逻辑思维有很大提升。

什么是链表结构呢?

链表是一种物理存储单元上非连续、非顺序的存储结构。比如A->B->C,这种结构,我们可以理解为A连接着B,B连接C,像这种结构我们就叫做链表结构。对了,火车的车厢,其实就是链表的结构的最好说明

为什么要有链表结构呢?

学过计算机的都知道数组(Array),数组常用切好用,但也存在问题。首先,数组必须需要知道空间大小(int[] age = new int[100], 必须声明长度),其次,对于元素之间插入、删除操作效率很低(如何在数组中间插入一个元素?)。

链表的出现,完美的解决了这些问题。

如何实现链表

首先我们需要声明一种结构


//链表结构: 构造节点 - 连接节点
//Template
class Node
{
  public int num;
  //指向下一个元素
  public Node next;
}

//链表结构: 构造节点 - 连接节点
//Template
class Node
{
  public int num;
  //指向下一个元素
  public Node next;
}

 

我们可以把上面的这种结构看做是一个礼品盒,可以存放整形数值。

然后我们创建一个MyList先生,这位先生就使用Node去存放整形物品,而且使用了链表结构哦!


class MyList
{
  public Node currentNode;
  public Node point;
  public MyList()
  {
    currentNode = new Node();
  }
  //存放物品
  public void Add(int value)
  {
    //第一次
    if(point == null)
    {
      currentNode.num = value;
      point = currentNode;
    }
    else  //2 3 4..... 次
    {
      Node temp = new Node();
      temp.num = value;
      point.next = temp;
      //更新指针
      point = temp;
    }

  }
}

class MyList
{
  public Node currentNode;
  public Node point;
  public MyList()
  {
    currentNode = new Node();
  }
  //存放物品
  public void Add(int value)
  {
    //第一次
    if(point == null)
    {
      currentNode.num = value;
      point = currentNode;
    }
    else  //2 3 4..... 次
    {
      Node temp = new Node();
      temp.num = value;
      point.next = temp;
      //更新指针
      point = temp;
    }
 
  }
}