大家好,又见面了,我是你们的朋友全栈君。
java ListNode
class ListNode{
E val; //结点值,泛型
ListNode<E> next; //下一结点
ListNode(E x){
val = this.x;
}
}
创建及遍历链表
class ListNode{
int val;
ListNode next;
ListNode(int x){
val = this.x;}
}
ListNode nodestr = new ListNode(0); //创建首结点
ListNode nextNode; //创建下一个结点
nextNode = nodestr; //指向首结点
//创建链表
for(int i = 0;i<10;i++){
ListNode newnode = new ListNode(i); //创建新的结点
nextNode.next = newnode; // 把新结点连起来
nextNode = nextNode.next; //把结点往后移
}//nextNode指向最后一个结点
nextNode = nodestr; //重新指向首结点
//打印
while(nextNode != null){
System.out.println("第一个结点值:"+ nextNode.val);
nextNode = nextNode.next;
}
要点:
1.创建首结点。
2.创建一个类似c指针的东西nextnode,用来指向下一个结点。
插入结点
while(nextNode != null){
if(nextNode.val == 5){
ListNode addnode = new ListNode(99); //创建新的结点
ListNode next = nextNode.next; //保存下一个结点的信息
nextNode.next = addnode; //插入新结点
addnode.next = next;
}
nextNode = nextNode.next;
}
要点:
例题:
给定一个链表head,删除链表的倒数第 n 个节点,并且返回链表的头结点
public class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val; }
ListNode(int val, ListNode next) {
this.val = val; this.next = next; }
}
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode start = new ListNode(0,head); //新建一个头结点之前的结点指向头节点
ListNode nextnode = new ListNode();
int length = getLength(head); //获取链表长度
nextnode = start;
for(int i = 1;i< length-n+1;i++){
nextnode = nextnode.next; //移动指针
}
nextnode.next = nextnode.next.next; //删除指定结点
ListNode res = start.next;
return res;
}
public int getLength(ListNode head){
int length = 0;
while(head != null){
length++;
head = head.next;
}
return length;
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126512.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...