线性表之链式存储结构-单向链表

线性表之链式存储结构-单向链表_第1张图片
单链表


线性表之链式存储结构-单向链表_第2张图片
删除一个节点


线性表之链式存储结构-单向链表_第3张图片
插入一个节点


线性表之链式存储结构-单向链表_第4张图片
Message的插入操作


线性表之链式存储结构-单向链表_第5张图片
根据when确定位置


线性表之链式存储结构-单向链表_第6张图片
图5

如图5为MessageQueue的删除操作:当头节点不为null,前节点的next赋值为当前节点的next;头节点为null,直接赋值为当前节点的next。最后当前节点的next赋值为null,等待gc

例子麻将:如下图,从服务器传过来的是无序的一副牌,过会再翻开变成有序的一副牌,此处要分析的就是从无序到有序的一个过程。经过第一次处理,分为9组,九个链表;第二次处理,按照花色分组得到三个链表,再将它们一个个连起来就得到最后结果了

线性表之链式存储结构-单向链表_第7张图片

第一次处理的关键代码:

LinkedList[] rankList=new LinkedList[9];

for (int i=0;i

rankList[i]=new LinkedList();

}

//把数据一个个放到对应的组中

while (list.size() >0) {

//取一个

    Mahjong m=list.remove();

//放到组中

    rankList[m.rank-1].add(m);

}

//把九组合并在一起

for (int i=0;i

list.addAll(rankList[i]);

}

你可能感兴趣的:(线性表之链式存储结构-单向链表)