java中单向链表用的多吗

2025-04-13 12:26:23
推荐回答(1个)
回答(1):

java中单向链表用的多.

这是我写的一个差不多,你看一下吧:
package com.test.list;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class LinkedList {

public static void main(String[] args) {

MyList l = new MyList();
MyListNode node = l.createList();
l.printNode(node);
//l.searchNode(node, 4);
//node = l.insertNode(node, 3, "g");
//l.printNode(node);
node = l.deleteNode(node, "d");
l.printNode(node);
}
}

class MyListNode {

public String data;

public MyListNode nextNode;
}

class MyList {

public MyListNode createList() {

MyListNode node = new MyListNode();

MyListNode q ,p;
q = new MyListNode();
q = node;

while (true) {

String s = null;

try {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("请输入节点数据:");
s = br.readLine();

if (s.equals("0")) {
break;
} else {
p = new MyListNode();
p.data = s;
p.nextNode = null;
q.nextNode = p;
q = p;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return node;
}

public void printNode(MyListNode node) {

MyListNode p = node.nextNode;
while (p!= null) {
System.out.print(" "+p.data);
p = p.nextNode;
}
}

public void searchNode(MyListNode node, int i){

MyListNode p = node.nextNode;

int j = 1;
while (p != null && jp = p.nextNode;
j++;
}
if( p == null || j>i) {
System.out.println("error");
}

System.out.println(" --"+p.data+"--");
}

public MyListNode insertNode(MyListNode node, int i ,String s) {

MyListNode p = node.nextNode;

int j = 1;
while (p != null && jp = p.nextNode;
j++;
}
if( p == null || j>i-1) {
System.out.println("error");
}

MyListNode n = new MyListNode();
n.data = s;
n.nextNode = p.nextNode;
p.nextNode = n;

return node;

}

public MyListNode deleteNode(MyListNode node ,String s) {

MyListNode p = node;

while(p.nextNode != null && !p.nextNode.data.equals(s)) {
p = p.nextNode;
}

p.nextNode = p.nextNode.nextNode;

return node;
}
}

/*逆位序创建
public MyListNode createList() {

MyListNode node = new MyListNode();
node.nextNode = null;

while(true) {

String s = null;

try {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("请输入节点数据:");
s = br.readLine();

if(s.equals("0")) {
break;
}else {
MyListNode n = new MyListNode();
n.data = s;
n.nextNode = node.nextNode;
node.nextNode = n;
}
} catch (Exception e) {
e.printStackTrace();
}

}
return node;
}
*/