单向链表的学习
作者:互联网
链表
单向链表:
package com.mianded.singlelist;
public class SingleListDemo {
public static void main(String[] args) {
StarNode starNode1 = new StarNode(1, "周杰伦");
StarNode starNode2 = new StarNode(2, "手写的从前");
StarNode starNode3 = new StarNode(3, "轨迹");
StarNode starNode4 = new StarNode(6, "暗号");
SingleList singleList = new SingleList();
// singleList.add(starNode1);
// singleList.add(starNode2);
// singleList.add(starNode3);
// singleList.add(starNode4);
// singleList.list();
singleList.addByOrder(starNode1);
singleList.addByOrder(starNode3);
singleList.addByOrder(starNode4);
singleList.addByOrder(starNode2);
// singleList.addByOrder(starNode2);
singleList.list();
// 测试修改update
// StarNode starNode5 = new StarNode(1, "明明就");
// singleList.update(starNode5);
// System.out.println("修改完成后");
// singleList.list();
// 测试删除
// singleList.delate(10);
// System.out.println("删除后");
// singleList.list();
System.out.println(getHeadLength(singleList.getHead()));
}
public static int getHeadLength(StarNode head) {
if (head == null) {
return 0;
}
StarNode temp = head.next;
int length = 0;
while(temp.next != null) {
length++;
temp = temp.next;
}
return length;
}
}
class SingleList {
// 先初始化节点
private StarNode head = new StarNode(0, null);
// 新增节点
public void add(StarNode starNode) {
// 先遍历到尾部
StarNode temp = head;
while(temp.next != null) {
temp = temp.next;
}
temp.next = starNode;
}
// 展示
void list() {
StarNode temp = head.next;
while(temp != null) {
System.out.println(temp);
temp = temp.next;
}
}
// 按照顺序增加
public void addByOrder(StarNode starNode) {
StarNode temp = head;
boolean flag = false;
while(temp.next != null) {
if(temp.next.no > starNode.no) {
break;
} else if(temp.next.no == starNode.no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
System.out.println("排名重复,无法添加");
} else {
starNode.next = temp.next;
temp.next = starNode;
}
}
// 修改
public void update(StarNode starNode) {
StarNode temp = head;
boolean flag = false;
while(temp.next != null) {
if(temp.no == starNode.no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
temp.name = starNode.name;
}else {
System.out.println("序号为无效序号");
}
}
// 删除
public void delate(int no) {
StarNode temp = head;
boolean flag = false;
while(temp.next != null) {
if(temp.next.no == no) {
System.out.println(temp.next.no);
flag = true;
break;
}
temp = temp.next;
}
if(flag) {
temp.next = temp.next.next;
}else {
System.out.println("未找到该序号");
}
}
public StarNode getHead() {
return head;
}
}
class StarNode {
int no;
String name;
StarNode next;
public StarNode(int no,String name) {
this.no = no;
this.name = name;
}
@Override
public String toString() {
return "StarNode [no=" + no + ", name=" + name + "]";
}
}
本周总结
本周主要还是写项目,对数据结构并没有更深一步的了解,好在算法题还是比较有保障的,希望下周继续努力。
标签:学习,temp,no,单向,StarNode,next,链表,singleList,public 来源: https://blog.csdn.net/weixin_52526235/article/details/121187601