Java实现单链表增删改查的实例代码详解
单链表是一种常见的数据结构,它由多个节点组成,每个节点包含一个值和一个指针,指向下一个节点。单链表可以用于实现栈、队列等数据结构。
在Java中,我们可以使用类来表示一个单链表。下面是单链表节点类的示例代码:
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
这个类表示单链表中的一个节点,val
是节点的值,next
是指向下一个节点的指针。
实现插入节点
要在单链表中插入一个新节点,需要找到要插入的位置,然后修改它前面的节点的指针。以下是在单链表中插入一个新节点的示例代码:
public void insertNode(ListNode head, ListNode newNode, int position) {
if (head == null) {
return;
}
if (position == 0) {
newNode.next = head;
head = newNode;
return;
}
int index = 0;
ListNode cur = head;
while (cur != null) {
if (index == position - 1) {
newNode.next = cur.next;
cur.next = newNode;
break;
}
cur = cur.next;
index++;
}
}
这个方法接受三个参数:head
表示单链表的头节点,newNode
表示要插入的新节点,position
表示要插入的位置。如果head
为null
,说明链表为空,直接返回。如果position
为0,说明要插入到链表的开头,这时只需要将新节点的指针指向头节点即可。如果position
大于0,则需要遍历链表找到要插入的位置,然后修改指针。
实现删除节点
要从单链表中删除一个节点,需要先找到要删除的节点的前一个节点,然后修改它的指针。以下是在单链表中删除一个节点的示例代码:
public void deleteNode(ListNode head, int position) {
if (head == null) {
return;
}
if (position == 0) {
head = head.next;
return;
}
int index = 0;
ListNode cur = head;
while (cur.next != null) {
if (index == position - 1) {
cur.next = cur.next.next;
break;
}
cur = cur.next;
index++;
}
}
这个方法的参数与上一个方法相似。如果head
为null
,直接返回。如果position
为0,说明要删除的是头节点,只需要将头节点指向下一个节点即可。如果position
大于0,则需要遍历链表找到要删除的节点的前一个节点,然后修改指针。
实现修改节点
要修改单链表中的一个节点的值,只需要找到这个节点,然后修改它的值即可。以下是修改单链表中一个节点的示例代码:
public void modifyNode(ListNode head, int position, int newVal) {
if (head == null) {
return;
}
int index = 0;
ListNode cur = head;
while (cur != null) {
if (index == position) {
cur.val = newVal;
}
cur = cur.next;
index++;
}
}
这个方法的参数与前两个方法相似。如果head
为null
,直接返回。查找要修改的节点,然后修改节点的值。
实现查找节点
要在单链表中查找一个节点,需要遍历整个链表,比对各个节点的值,直到找到匹配的节点。以下是查找单链表中一个节点的示例代码:
public int searchNode(ListNode head, int value) {
if (head == null) {
return -1;
}
int index = 0;
ListNode cur = head;
while (cur != null) {
if (cur.val == value) {
return index;
}
cur = cur.next;
index++;
}
return -1;
}
这个方法的参数与前面的方法相似。如果head
为null
,直接返回-1。遍历链表查找匹配的节点,如果找到则返回位置,否则返回-1。
示例说明
下面是一个使用单链表插入、删除、修改和查找节点的示例:
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
node1.next = node2;
node2.next = node3;
// 插入节点
ListNode newNode = new ListNode(4);
insertNode(node1, newNode, 2);
// 删除节点
deleteNode(node1, 1);
// 修改节点
modifyNode(node1, 2, 5);
// 查找节点
int position = searchNode(node1, 3);
这段代码创建了一个含有3个节点的单链表,然后插入一个新节点,删除节点2,修改节点3的值,最后查找节点3的位置。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现单链表增删改查的实例代码详解 - Python技术站