目录
一、单项列表
链表的优点:
由于链表上的元素在空间存储上内存地址不连续。
所以随机增删元素的时候不会有大量元素位移,因此随机增删效率较高。
在以后的开发中,如果遇到随机增删集合中元素的业务比较多时,建议
使用LinkedList。
链表的缺点:
不能通过数学表达式计算被查找元素的内存地址,每一次查找都是从头
节点开始遍。
注意:
public class ListNode{
int val;
ListNode next; //链表指向的下一个值的指针
ListNode(int x){val = x;} //这个方式赋值
}
通过xx.next = new ListNode(4);来赋值,注意此时是赋值给下一个指针指向的位置,此时此链表一个值,值为4。
单项列表例子
package Linked;
public class GoodsNode {
public int id;
public String name;
public Double price;
@Override
public String toString() {
return "GoodsNode{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
'}';
}
public GoodsNode next;
public GoodsNode(int id, String name, Double price) {
this.id = id;
this.name = name;
this.price = price;
}
}
package Linked;
public class DLLinkedList {
GoodsNode node = new GoodsNode(0, "", 0.0);
//往链表中插入数据(在最后插入)
public void add(GoodsNode goodsNode) {
GoodsNode temp = node;
while (true) {
if (temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = goodsNode;
}
//添加节点(按照顺序)
//按照商品id进行排序,从小到达按顺序添加
public void addOrder(GoodsNode goodsNode) {
GoodsNode temp = node;
boolean flag = false;
while (true) {
if (temp.next == null) {
break;
}
if (temp.next.id > goodsNode.id) {
break;
} else if (temp.next.id == goodsNode.id) {
flag = true;
break;
}
temp = temp.next;