链表初探(链表反转)

实话说,我大学时代数据结构和算法学得真不好,尤其是链表。所以今天准备整理下链表相关的。

为什么要有链表?

我们知道数组在内存中是占有连续的空间的,但这种占有连续空间的数据结构会造成一种内存空间浪费,会散列许多分散的内存空间的,所以我们需要将这些空间利用起来,那么我们需要一种数据结构来将这些散列的内存空间利用起来,这时候就出现了链表这种数据结构。我们先来看看链表的结构:

  public class ListNode{
        int val;        //存数据值
        ListNode next;  //表示指向下个节点
        public ListNode(int val){
            this.val=val;
            this.next=null;
        }
    }

链表的优势和主要应用场景

链表的结构我们都知道了,那么其主要的优势是什么呢,我们还是拿数组来做对比,由于链表的这种结构,以及其在内存空间存在的形式,那么其优势就是其可扩展性,链表非常适合插入和删除频繁多的操作的场景了。但是链表(o(n))相比于数组(o(1))来说,其查找的效率比较低,所以其主要实用场景是:对线性表的长度或者规模难以估计;频繁做插入删除操作;构建动态性比较强的线性表。(引用)

原文地址:https://www.cnblogs.com/LcMiho/p/10120936.html