注意:
单链表,需要定位在需要进行操作的前一个结点
1、通过数组,实现单链表功能
2、尾插法:
1)通过遍历,达到末尾的前一个元素
2)temp.next == null;
3、头插法
1)直接插入到头指针的下一个位置
2)并把原来的链表接在新的结点的后方
注意:先将原来的链表接在新的结点上,再将新结点接在头结点的后面(先右再左)
4、遍历结点
1)通过循环遍历,输出结点
2)结束条件为temp.next == null
import java.util.ArrayList;
import java.util.Scanner;
public class LinkList {
public static void main(String[] args) {
SingleLinkedList singleLinkedList = new SingleLinkedList();
Scanner s = new Scanner(System.in);
ArrayList<String> arrayList = new ArrayList<>();
boolean flag = true;
while(flag){
System.out.println("a(add)添加结点");
System.out.println("l(list)遍历结点");
System.out.println("e(exit)退出程序");
System.out.println("请选择你的操作:");
String key = s.next();
switch (key){
case "a":{
arrayList.clear();
// 创建结点
System.out.println("请分别输入结点的信息: ");
for (int i = 0; i < 3; i++) {
arrayList.add(s.next());
}
// int i = s.nextInt();
// String n = s.next();
// String nickname = s.next();
HeroNode heroNode = new HeroNode(arrayList.get(0),arrayList.get(1),arrayList.get(2));
singleLinkedList.add(heroNode);
break;
}
case "l":{
singleLinkedList.list();
System.out.println();
break;
}
case "e":{
s.close();
flag = false;
break;
}
}
}
}
}
// 定义管理英雄的
class SingleLinkedList{
// 初始化一个头节点,头节点不要动,不存放任何的数据
private HeroNode head = new HeroNode("0","",""); // 创建头结点 0,“”, “”
// 尾插法
public void add(HeroNode heroNode){
// 辅助变量
HeroNode temp = head;
// 遍历,直到最后尾部
while(true){
if(temp.next == null){
break;
}
temp = temp.next;
}
// 到达最后一个指针
temp.next = heroNode;
}
// 显示链表[遍历]
public void list(){
HeroNode temp = head;
if((temp.next)==null){
System.out.println("空链表");
return;
}
while(temp.next!=null){
temp = temp.next; // 有头指针
System.out.println(temp.toString());// 输出结点中的信息
}
}
}
// 英雄类的结点
class HeroNode {
public String no;// 编号
public String name;// 名字
public String nickname; // 称号
public HeroNode next; // 下一个结点
public HeroNode(String n, String name, String nickname) {
this.no = n;
this.name = name;
this.nickname = nickname;
}
@Override
public String toString() {
return "heroNode{" +
"no=" + no +
", name='" + name + '\'' +
", nickname='" + nickname + '\'' +
'}';
}
}
该文描述了一个使用Java实现的单链表数据结构,支持尾插法和头插法添加结点,并能遍历输出链表内容。用户可以选择添加结点、遍历链表或退出程序。链表的插入操作强调了需要定位到前一个结点,并提供了清晰的操作步骤。
1653

被折叠的 条评论
为什么被折叠?



