「java链表销毁」java单链表的删除

博主:adminadmin 2022-11-27 08:03:07 57

今天给各位分享java链表销毁的知识,其中也会对java单链表的删除进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java单链表根据内容删除节点

代码:

// 删除下标为index的节点

public void remove(int index) {

if (index = modCount) {

// 抛异常

System.out.println("indexOutOfBoundsException!");// 最好自定义异常抛出,这里演示

return;

}

Node node = head;

// 如果节点为第一个节点

if (index == 0) {

head = head.next; // 将头节点指向第二个节点

modCount--;

return;

}

// 如果节点为最后一个节点,找到最后一个节点的前一个节点,不用管

if (index == modCount - 1) {

System.out.println("ddd");

// 找到最后一个节点的前一个节点

int j = 0;

while (node != null  j  index - 1) {

// 最后一个节点的前一个节点

node = node.next;

j++;

}

last = node; // 最后一个节点设置为前一个节点

modCount--;

return;

}

// 如果节点为中间节点

int j = 0;

while (node != null  j  index - 1) {

// 查找被删除的节点的前一个节点

node = node.next;

j++;

}

node.next = node.next.next; // 被删除节点的下一个节点设置为被删除节点的下下个节点

modCount--;

}

java链表怎么删除第一个节点

单向链表还是双向的?

是不是就删除第一个?

那么可以这样

public

void

delete()

{

head

=

head.next();

}

如果想链尾的把链表做成双端链表就简单很多,如果是普通的就这样:

public

void

delete()

{

JNode

node

=

head;

JNode

node2

=

null;

while(node.next!=null)

{

node2

=

node;

node

=

node.next;

}

if(node==head){

head

=

null;

}

else

node2.next

=

null;

}

java链表可以循环删除吗

//LinkedList是我见过方法最多最多的集合了!

//删除方法,分老版本(空值抛异常),和新版本(空值给出null)

//遍历索引删除,迭代器删除!

//头删除,尾删除,反正所有集合中,它是我看过最多最多的的方法了!

//看几种全都是循环删除的吧!

import java.util.*;

public class LinkedListTest {

public static void main(String[] args) {

LinkedListString lk=new LinkedList();

add(lk);//添加!

see(lk);//查看!

//删除方法1:

while(lk.size()0) {

System.out.println("长度="+lk.size()+"\t删除:"+lk.poll());

}

see(lk);//查看!

add(lk);//添加!

see(lk);//查看!

//删除方法2:

while(lk.size()0) {

System.out.println("长度="+lk.size()+"\t删除:"+lk.pollFirst());

}

see(lk);//查看!

add(lk);//添加!

see(lk);//查看!

//删除方法3:

while(lk.size()0) {

System.out.println("长度="+lk.size()+"\t删除:"+lk.pollLast());

}

see(lk);//查看!

//删除方法4:

add(lk);//添加!

see(lk);//查看!

for(int i=0;ilk.size();) {

System.out.println("删除:"+lk.remove(i));

}

see(lk);//查看!

//删除方法5:

add(lk);//添加!

see(lk);//查看!

for(ListIteratorString it=lk.listIterator();it.hasNext();) {

System.out.println(lk.remove(it.nextIndex()));

}

see(lk);//查看!

}//添加!

private static void add(ListString lk) {

for(int i=0;i10;i++) {

lk.add("第"+(i+1)+"个元素:"+((char)(97+i)));

}

}//查看!

private static void see(ListString lk) {

System.out.println("链表长度="+lk.size());

System.out.println(lk);

System.out.println("--------------------------");

}

}

java清空链表

a.clear();//清空链表

//没办法清空内存,Java中的内存清空是Java垃圾回收器来。程序猿没法控制的。。。

java链表中删除一个节点的操作跟指向下一个节点的操作一样,那最后链表不就空了?

用已经封装好的ArrayList可以很方便的完成要求:

ListInteger list = ...// 操作的链表

for(int i=0; ilist.size; ){

int val = list.get(i);

if(val max){

list.remove(i);

}else{

i++;

}

}

java链表删除一个节点的原理是这样的,prev-curr-next,prev是当前节点curr的前一个节点,next是curr的下一个节点,删除curr就是让prev直接指向next即可,结果为prev-next,这样就行了,curr由于没有被引用,会被垃圾回收器回收。至于你说的链表空了,是从何而来?

java 链表

public class NodeT {

public T value;

public NodeT next;

public Node(T value, NodeT next) {

this.value = value;

this.next = next;

}

}

public class EverySecond {

public T NodeT everySecond(NodeT list) {

NodeT tmp = new NodeT(list.value, null);

if (list.next != null) {

tmp.next = everySecond(list.next);

}

return tmp;

}

}

public class EverySecondDriver {

public static void main(String[] args) {

// Build list

char[] values = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};

NodeCharacter list = null;

for (int i = values.length - 1; i = 0; i--) {

list = new NodeCharacter(values[i], list);

}

// Print list

System.out.print("List:" + list);

for (NodeCharacter n = list; n != null; n = n.next) {

System.out.print(" " + n.value);

}

System.out.println();

// Get new list, with every second element

EverySecond es = new EverySecond();

NodeCharacter result = es.everySecond(list);

// Print result

System.out.print("Result:" + result);

for (NodeCharacter n = result; n != null; n = n.next) {

System.out.print(" " + n.value);

}

System.out.println();

}

}

java链表销毁的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java单链表的删除、java链表销毁的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。