Java双向链表按照顺序添加节点的方法实例

2025-05-29 0 97

分析过程:

首先需要比较待添加的节点编号与已有的节点编号的大小,若待添加的节点编号已经存在,则不能加入。为防止出现空指针的情况,需要对节点的位置进行判断。

示例代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109
package linkedlist;

public class DoubleLinkedListDemo {

public static void main(String[] args) {

// 测试

System.out.println("双向链表的测试");

// 创建节点

Node node1 = new Node(1, "道明寺");

Node node2 = new Node(2, "花泽类");

Node node3 = new Node(3, "西门总二郎");

Node node4 = new Node(4, "美作玲");

// 创建一个双向链表

DoubleLinkedList doubleLinkedList = new DoubleLinkedList();

// 添加节点

doubleLinkedList.addByOrder(node1);

doubleLinkedList.addByOrder(node4);

doubleLinkedList.addByOrder(node3);

doubleLinkedList.addByOrder(node2);

// 显示排序后的双向链表

doubleLinkedList.list();

}

}

// 创建一个双向链表的类

class DoubleLinkedList {

// 先初始化头节点,头节点不动

private Node head = new Node(0, "");

// 返回头节点

public Node getHead() {

return head;

}

// 添加节点时,根据编号将节点插入到指定位置

// 如果有这个编号,则添加失败,并给出提示

public void addByOrder(Node node) {

// 头节点不能动,通过一个辅助指针(变量)帮助找到需要添加的位置

Node temp = head;

boolean flag = false; // flag标志添加的编号是否存在,默认为false

while(true) {

if(temp.next == null) {

break;

}

if(temp.next.no > node.no) {

break;

}

if(temp.next.no == node.no) {

flag = true;

break;

}

temp = temp.next; // 遍历链表

}

if(flag) {

System.out.printf("输入的编号%d已经存在,不能加入\\n", node.no);

}

else {

// 为防止出现空指针的情况,需要对temp节点位置进行判断

// 若双向链表尚未到达尾端,则需要将node节点与其相邻的后面的节点进行连接

if(temp.next != null) {

node.next = temp.next;

temp.next.pre = node;

}

// 无论双向链表是否到达尾端,都需要将node节点与其相邻的前面的节点进行连接

temp.next = node;

node.pre = temp;

}

}

// 遍历双向链表的方法

// 显示链表【遍历】

public void list() {

// 判断链表是否为空

if(head.next == null) {

System.out.println("链表为空");

return;

}

// 因为头节点不能动,需要一个辅助变量来遍历

Node temp = head.next;

while (true) {

// 判断是否到链表最后

if(temp == null)

break;

// 输出节点的信息

System.out.println(temp);

// 将temp后移

temp = temp.next;

}

}

}

// 创建一个双向链表的类

// 定义Node,每个Node对象就是一个节点

class Node {

public int no;

public String name;

public Node next; // 指向下一个节点,默认为null

public Node pre; // 指向前一个节点,默认为null

// 构造器

public Node(int no, String name) {

this.no = no;

this.name = name;

}

// 为了显示方便,重新toString

@Override

public String toString() {

return "Node [no=" + no + ", name=" + name +"]";

}

}

运行结果运行结果

Java双向链表按照顺序添加节点的方法实例

总结

到此这篇关于Java双向链表按照顺序添加节点的文章就介绍到这了,更多相关Java双向链表按照顺序添加节点内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://blog.csdn.net/Peppaaa/article/details/113546576

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java双向链表按照顺序添加节点的方法实例 https://www.kuaiidc.com/109498.html

相关文章

发表评论
暂无评论