1:单链表是:
- 单链表是一种链式存取的 数据结构 用一组地址任意的 存储单元 存放线性表中的数据元素。
- 链表中的数据是以结点来表示的,每个结点的构成:元素 ( 数据元素 的映象) + 指针 (指示后继元素 存储 位置),元素就是存储数据的存储单元,指针就是连接每个结点的 地址 数据。 链表中的数据是以结点来表示的,
- 每个结点的构成:元素 ( 数据元素 的映象) + 指针 (指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 以”结点的序列”表示线性表称作 线性链表 (单链表),单链表是链式存取的结构。 链接方式存储的线性表简称为链表(Linked List)。 ② 链表中结点的逻辑次序和物理次序不一定相同。
2:代码实现:
单链表类属性的定义:
单链表管理类(简单的增删改查):
class LindedHeroNode {
private HeroNode head = new HeroNode(0, "", "");
//顺序添加并不能重复
public void addOrder(HeroNode heroNode) {
HeroNode temp = head;
//标识
boolean flag = false;
while (true) {
if (temp.next == null) {
//已经到最后了
break;
}
if (temp.next.no > heroNode.no) {//找到位置就添加到后面
break;
} else if (temp.next.no == heroNode.no) {//相等则不添加
flag = true;
break;
}
//后移
temp = temp.next;
}
if (flag) {
System.out.println("有相等的编号");
} else {
heroNode.next = temp.next;
temp.next = heroNode;
}
}
//修改
public void update(HeroNode heroNode) {
//先判断链表内部有没有数据
if (head.next == null) {
return;
}
HeroNode temp = head.next;
boolean flag = false;
while (true) {
if (temp.next == null) {
break;
}
//找到退出
if (temp.no == heroNode.no) {
flag = true;
break;
}
//指向下一节点
temp = temp.next;
}
if (flag) {
temp.Name = heroNode.Name;
temp.noName = heroNode.noName;
} else {
System.out.println("没有找到标识");
}
}
//删除
public void delect(int no) {
if (head.next == null) {
System.out.println("没有数据");
return;
}
HeroNode temp = head;
boolean flag = false;
while (true) {
if (temp.next == null) {
break;
}
if (temp.next.no == no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
temp.next = temp.next.next;
} else {
System.out.println("没有找到");
}
}
//遍历
public void list() {
if (head.next == null) {
System.out.println("没有数据");
return;
}
//头结点不能动 需要一个辅助变量来辅助
HeroNode temp = head.next;
while (true) {
if (temp == null) {
break;
}
System.out.println(temp);
temp = temp.next;
}
}
}
3:测试:
Original: https://www.cnblogs.com/yunjie0930/p/15189644.html
Author: 小杰i
Title: 数据结构入门之单链表代码实现(java)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576400/
转载文章受原作者版权保护。转载请注明原作者出处!