目录
一:链表的思想
物理结构图
逻辑结构图
二:链表的案例![](https://img-blog.csdnimg.cn/a540c4bcd3d8469097c894d6597ac12b.png)
2.1 尾部添加结点
public void add(GoodsNode goodsNode) {
GoodsNode temp = node;
while(true) {
if(temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = goodsNode;
}
2.2 按照编号进行结点的添加
1.直接插入到头结点的尾部
2.插入的结点的编号小于了下一个结点的时候插入
public void idAdd(GoodsNode goodsNode) {
GoodsNode temp = node;
boolean flg = false;
while(true) {
if(temp.next == null) {
break;
}
if(temp.next.id > goodsNode.id) {
break;
}else if(temp.next.id > goodsNode.id) {
flg = true;
break;
}
temp = temp.next;
}
if(flg == true) {
System.out.print("已经存在了该商品");
}else {
goodsNode.next = temp.next;
temp.next = goodsNode;;
}
}
2.2 按照编号进行结点的添加
1. 找到目标结点
2. 根据新的元素进行修改(价格和名称)
public void updateNode(GoodsNode goodsNode) {
if(node.next == null) {
System.out.print("链表为空");
return;
}
GoodsNode temp = node.next;
boolean flg = false;
while(true) {
if(temp.next == null) {
break;
}
else if(temp.id == goodsNode.id) {
flg = true;
break;
}
temp = temp.next;
if(flg) {
temp.name = goodsNode.name;
temp.price = goodsNode.price;
}else {
System.out.print("在整个链表中未找到结点");
}
}
}
2.3 按照编号进行结点的删除
1. 寻找目标结点
2. 删除返回目标结点
public void delete(int id) {
GoodsNode temp = node;
boolean flg = false;
while(true) {
if(temp.next == null) {
break;
}
if(temp.next.id == id) {
flg = true;
break;
}
temp = temp.next;
}
if(flg == true) {
temp.next = temp.next.next;
}else {
System.out.print("未找到结点");
}
}
2.4 查看链表
public void list() {
if(node.next == null) {
System.out.print("空链表");
return;
}
GoodsNode temp = node.next;
while(true) {
if(temp == null) {
break;
}
System.out.println(temp);
temp = temp.next;
}
}
2.5 项目展示
2.5.1 项目产品类
package linked;
public class GoodsNode {
public int id;
public int price;
public String name;
public GoodsNode next;
public GoodsNode(int id,int price,String name) {
this.id = id;
this.name = name;
this.price = price;
}
public String toString() {
return "id=" + id + "name=" + name + "price=" + price;
}
}
2.5.2 项目产品链表功能操作
package linked;
public class LinkedList {
//头结点
private GoodsNode node = new GoodsNode(0,0,"");
//添加节点
public void add(GoodsNode goodsNode) {
GoodsNode temp = node;
while(true) {
if(temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = goodsNode;
}
//按照商品编号进行插入
public void idAdd(GoodsNode goodsNode) {
GoodsNode temp = node;
boolean flg = false;
while(true) {
if(temp.next == null) {
break;
}
if(temp.next.id > goodsNode.id) {
break;
}else if(temp.next.id == goodsNode.id) {
flg = true;
break;
}
temp = temp.next;
}
if(flg == true) {
System.out.print("已经存在了该商品");
}else {
goodsNode.next = temp.next;
temp.next = goodsNode;;
}
}
//修改结点
public void updateNode(GoodsNode goodsNode) {
if(node.next == null) {
System.out.print("链表为空");
return;
}
GoodsNode temp = node.next;
boolean flg = false;
while(true) {
if(temp == null) {
break;
}
else if(temp.id == goodsNode.id) {
flg = true;
break;
}
temp = temp.next;
if(flg) {
temp.name = goodsNode.name;
temp.price = goodsNode.price;
}else {
System.out.print("在整个链表中未找到结点");
}
}
}
//删除结点
public void delete(int id) {
GoodsNode temp = node;
boolean flg = false;
while(true) {
if(temp.next == null) {
break;
}
if(temp.next.id == id) {
flg = true;
break;
}
temp = temp.next;
}
if(flg == true) {
temp.next = temp.next.next;
}else {
System.out.print("未找到结点");
}
}
//查看链表的每一个元素
public void list() {
if(node.next == null) {
System.out.print("空链表");
return;
}
GoodsNode temp = node.next;
while(true) {
if(temp == null) {
break;
}
System.out.println(temp);
temp = temp.next;
}
}
}
2.5.3 项目产品链
package linked;
public class LinkedTest {
public static void main(String[] args) {
GoodsNode goodsNode1 = new GoodsNode(1,10,"耐克运动鞋");
GoodsNode goodsNode2 = new GoodsNode(2,10,"李宁运动鞋");
GoodsNode goodsNode3 = new GoodsNode(3,10,"阿迪运动鞋");
LinkedList list = new LinkedList();
list.add(goodsNode1);
list.add(goodsNode2);
list.add(goodsNode3);
list.list();
}
}