package 数据结构之链表增删查;
public class Node {
String name;// 数据域
Node next;
// 链域
public Node() {
this.name = ""
;
next =
null;
}
public Node(String name) {
this.name =
name;
next =
null;
}
}
package 数据结构之链表增删查;
public class Link {
Node head;// 头结点
public Link() {
head =
new Node();
// 初始化头结点
}
/*
* 添加节点,在链表的最后添加
*/
public void add(Node data) {
Node temp =
head;
while (temp.next !=
null) {
temp =
temp.next;
}
temp.next =
data;
}
/*
* 插入节点 在某个节点之后插入一个新的节点
*/
public void insert(Node data, String newname) {
Node temp =
head;
while (temp.next !=
null) {
if (temp.next.name.equals(data.name)) {
Node newNode =
new Node(newname);
newNode.next =
temp.next.next;
temp.next.next =
newNode;
break;
} else {
temp =
temp.next;
}
}
} /*
* 删除节点
*/
public void delete(Node data) {
Node temp =
head;
while (temp.next !=
null) {
if (temp.next.name.equals(data.name)) {
temp.next =
temp.next.next;
break;
} else {
temp =
temp.next;
}
}
}
/*
* 计算链表长度
*/
public int size() {
int len = 0
;
Node temp =
head;
while (temp.next !=
null) {
len++
;
temp =
temp.next;
}
return len;
}
/*
* 查找数据 返回该数据的位置,返回3说明此数据在链表的第3个节点处,-1为链表中无此数据
*/
public int serach(String name) {
Node temp =
head.next;
int index = 0
;
while (temp !=
null) {
if (temp.name.equals(name)) {
index++
;
return index;
}
index++
;
temp =
temp.next;
}
return -1
;
}
/*
* 遍历链表
*/
public void display() {
Node temp =
head;
while (temp.next !=
null) {
System.out.print(temp.next.name + "->"
);
temp =
temp.next;
}
System.out.println();
}
public static void main(String[] args) {
// 创建链表
Link link =
new Link();
// 创建节点
Node node1 =
new Node("宋江"
);
Node node2 =
new Node("卢俊义"
);
Node node3 =
new Node("吴用"
);
Node node4 =
new Node("林冲"
);
Node node5 =
new Node("李逵"
);
Node node6 =
new Node("燕青"
);
// 链表中添加数据节点
link.add(node1);
link.add(node2);
link.add(node3);
link.add(node4);
link.add(node5);
link.add(node6);
link.display();// 遍历
System.out.println(link.size());
// 6,输出链表长度
System.out.println(link.serach("李逵"));
// 5
System.out.println(link.serach("燕"));
// 不存在,返回-1
link.insert(node4, "花荣");
// 在node4"林冲"之后添加"花荣"
link.display();
// 插入数据后遍历
link.delete(node3);
// 删除节点node3"吴用"
link.display();
// 删除之后再遍历链表
System.out.println(link.size());
}
}
运行结果是:
宋江->卢俊义->吴用->林冲->李逵->燕青->65-1宋江->卢俊义->吴用->林冲->花荣->李逵->燕青->宋江->卢俊义->林冲->花荣->李逵->燕青->6
菜鸟阶段,错误难免,还请多多指教!
转载于:https://www.cnblogs.com/neuhao/p/6480757.html
相关资源:java单向链表的实现实例