链表的基本操作 java_详细实现单链表的基本操作【Java版】

节点类

static Node head=new Node();

static class Node{

int data;

Node next;

public Node() {//无参构造方法,默认data为0

}

public Node(int data) {//带data构造方法

this.data=data;

}

}

添加节点

/*

* 添加节点,尾插法

*/

public void addNode(int data) {

Node node = new Node(data);//创建新节点对象

Node temp = head;

while(temp.next != null) {//找到当前链表尾结点

temp=temp.next;

}

temp.next=node;

}

遍历节点

/*

* 遍历链表

*/

public void printNode() {

Node temp = head.next;

while(temp!=null) {

System.out.print(temp.data+" ");

temp=temp.next;

}

System.out.println();

}

统计链表长度

/*

* 统计链表长度

*/

public static int length() {

int length=0;

Node temp = head;//head为头指针,不算作链表节点

while(temp.next!=null) {

length++;

temp=temp.next;

}

return length;

}

插入节点

/*

* 通过索引插入节点

*/

public void insertNode(int index,int data) {

int size = length()+1;//+1是因为尾部插入的索引值是当前链表尾结点后一个哦,不是尾结点的索引

if(index==size) { //在链表尾部插入则直接调用addNode方法

addNode(data);

return;

}

if(index<1||index>size) {

System.out.println("不正确的位置索引");

return;

}

Node temp=head;

Node node = new Node(data);

int length=1;

while(temp.next!=null) {

if(index==length++) {//先判断是否相等,然后length++

node.next=temp.next;

temp.next=node;

return;

}

temp=temp.next;

}

}

删除尾结点

/*

* 删除尾结点

*/

public void popNode() {

Node temp = head;

Node pre = temp;

while(temp.next!=null) {

pre=temp;

temp=temp.next;

}

pre.next=null;//链表尾结点的next始终指向NULL

}

通过索引删除节点

/*

* 通过索引删除节点

*/

public void deleteNode(int index) {

if(index==length()) { //如果索引位置是尾结点位置,调用popNode方法

popNode();

return;

}

if(index<1||index>length()) {

System.out.println("删除节点位置索引不合法");

return;

}

Node temp=head;

int length=1;

while(temp.next!=null) {

if(index==length++) {

System.out.println(temp.data);

//删除只需要把要删除节点的上一个节点的next指向删除节点的下一个节点

temp.next=temp.next.next;

return;

}

temp=temp.next;

}

}

关于单链表的基本操作就写到这里了,当然关于链表的其他的一些操作我可能会出后续。。再会。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值