面向结构编程的宠儿-链表

作者: 肖马克_蛮牛 | 来源:发表于2016-04-15 15:37 被阅读190次

Unity版本: 5.3.4

使用语言: C#


First

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

WHAT

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

WHY

为什么要有链表结构呢?
学过计算机的都知道数组(Array),数组常用切好用,但也存在问题。首先,数组必须需要知道空间大小(int[] age = new int[100], 必须声明长度),其次,对于元素之间插入、删除操作效率很低(如何在数组中间插入一个元素?)。
链表的出现,完美的解决了这些问题。

HOW

如何在计算机中使用链表结构?
首先我们需要声明一种结构

//链表结构: 构造节点 - 连接节点
//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;
        }

    }
}

然后,我们可以在客户端测试一下:
public static void Main (string[] args)
    {
        MyList<int> mList = new MyList<int>();
        //添加元素
        mList.Add(1);
        mList.Add(11);
        mList.Add(111);
        mList.Add(1111);
        while(mList.currentNode != null)
        {
            Console.WriteLine (mList.currentNode.num);
            mList.currentNode = mList.currentNode.next;
        }

    }
我们自己定义的一个整形集合就这样👌了。它有两个优点:可以存放任意多个元素!方便元素的插入和删除。

WHERE

应用场景:集合(动态数组)、贪吃蛇、地图的循环生成、老虎机效果等等,链表可以帮助我们完成很多事情。

Last

 #成功的道路没有捷径,代码这条路更是如此,唯有敲才是王道。

相关文章

  • 面向结构编程的宠儿-链表

    Unity版本: 5.3.4 使用语言: C# First模块化编程是大多数初学者必经之路,然后可能你走向了结构...

  • iOS(swift)类和结构体的区别

    类是面向对象编程;结构体是面向协议编程(面向对象的升级)。swift推荐在app中使用结构体(struct),类(...

  • 基础水平与进阶水平的Java程序员必看知识

    怎样才是一个基础水平的Java程序员呢? 熟悉常用的数据结构,包括数组,链表,树,哈希表等。熟悉结构化编程和面向对...

  • 手写HashMap

    Map 最经典的数据结构:数组 + 链表 自定义Map接口 面向接口的编程思想。 自定义Map实现类 成员变量 E...

  • js面向对象

    js面向对象(第五周) 什么是面向对象 面向对象是一种编程思想,是在面向过程编程(结构化编程)之后出现的,面向对象...

  • JS之面向对象

    什么是面向对象? 面向对象是一种编程思想,是在面向过程编程(结构化编程)之后出现的,面向对象的思想基于抽象数据类型...

  • 编程范式

    结构化编程 结构化编程对程序控制权的直接转移进行了限制和规范 面向对象编程 面向对象编程对程序控制权的间接转移进行...

  • Python 闭包

    闭包(closure)是函数式编程的重要的语法结构。函数式编程是一种编程范式 (而面向过程编程和面向对象编程也都是...

  • Swift 中协议的扩展的简单应用

    参考: Swift面向协议编程初探 从 Swift 的面向协议编程说开去 根据下面的结构 设计类和协议 使用:

  • 贪心、分治、动态规划算法

    书籍:大话数据结构、剑指offer(必看 必看 必看)、编程之美、编程珠玑 10个数据结构:数组、链表、栈、队列、...

网友评论

本文标题:面向结构编程的宠儿-链表

本文链接:https://www.haomeiwen.com/subject/gtsnlttx.html