您的位置:首页 > 编程语言 > Java开发

java 链表的常见操作

2017-08-30 21:53 260 查看
1.定义链表的节点类

class Node {
protected Node next; // 下一节点
protected String data;// 数据

public Node(String data) {
this.data = data;
}

// 显示此节点
public void show() {
System.out.print(data+"、");
}
}

2.定义链表类及其操作方法
class LinkList {
public Node first; // 定义头结点
private int pos = 0;// 节点的位置

public LinkList() {
this.first = null;
}

// 插入一个头节点
public void addFirstNode(String data) {
Node node = new Node(data);
node.next = first;
first = node;
}

// 删除一个头结点,并返回头结点
public Node deleteFirstNode() {
Node tempNode = first;
first = tempNode.next;
return tempNode;
}

// 在任意位置插入节点 在index的后面插入
public void add(int index, String data) {
Node node = new Node(data);
Node current = first;
Node previous = first;
while (pos != index) {
previous = current;
current = current.next;
pos++;
}
node.next = current;
previous.next = node;
pos = 0;
}

// 删除任意位置的节点
public Node deleteByPos(int index) {
Node current = first;
Node previous = first;
while (pos != index) {
pos++;
previous = current;
current = current.next;
}
if (current == first) {
first = first.next;
} else {
pos = 0;
previous.next = current.next;
}
return current;
}

// 根据节点的data删除节点(仅仅删除第一个)
public Node deleteByData(String data) {
Node current = first;
Node previous = first; // 记住上一个节点
while (current.data != data) {
if (current.next == null) {
return null;
}
previous = current;
current = current.next;
}
if (current == first) {
first = first.next;
} else {
previous.next = current.next;
}
return current;
}

// 显示出所有的节点信息
public void displayAllNodes() {
Node current = first;
while (current != null) {
current.show();
current = current.next;
}
System.out.println();
}

// 根据位置查找节点信息
public Node findByPos(int index) {
Node current = first;
if (pos != index) {
current = current.next;
pos++;
}
return current;
}

// 根据数据查找节点信息
public Node findByData(String data) {
Node current = first;
while (current.data != data) {
if (current.next == null)
return null;
current = current.next;
}
return current;
}
}

3.测试链表操作:
public class Client {

public static void main(String[] args) {
LinkList linkList = new LinkList();
linkList.addFirstNode("A");
linkList.addFirstNode("B");
linkList.addFirstNode("C");
linkList.add(1, "D");
linkList.add(2, "E");
linkList.add(3, "F");
linkList.displayAllNodes();
Node node = linkList.deleteByData("A");
System.out.println("node : " + node.data);
linkList.displayAllNodes();
Node node1 = linkList.findByPos(0);
System.out.println("node1: " + node1.data);
Node node2 = linkList.findByData("E");
System.out.println("node2: " + node2.data);
}
}

4.执行结果:
C、D、E、F、B、A、
node : A
C、D、E、F、B、
node: C
node: E
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 链表 链表操作