大家好,又见面了,我是你们的朋友全栈君。
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;
}
要点:
例题:
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;
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126512.html原文链接:https://javaforall.cn