单链表
public class LinkedList {
public static void main(String[] args) {
Node node = new Node(1, "张三");
Node node2 = new Node(2, "王五");
Node node3 = new Node(3, "李四");
Node node4 = new Node(4, "李五");
Node node5 = new Node(5, "李六");
Node node6 = new Node(6, "李七");
Management m = new Management();
m.add(node3);
m.add(node2);
m.add(node4);
m.add(node5);
m.add(node);
m.add(node6);
m.list();
}
}
class Management {
//头结点
private final Node head = new Node(0, "");
//长度
private int size;
public Management() {
size = 0;//初始化长度
}
/**
* 增加元素
* @param node
*/
public void add(Node node) {
Node temp = head;
while (true) {
if (temp.next == null) {
temp.next = node;
++size;
break;
}
if (temp.next.no > node.no) {
node.next = temp.next;
temp.next = node;
++size;
break;
} else if (temp.next.no == node.no) {
temp.next.name = node.name;
++size;
break;
}
temp = temp.next;
}
}
/**
* 遍历链表
*/
public void list() {
Node temp = head;
if (size == 0) {
System.out.println("链表为空");
return;
}
while ((temp = temp.next) != null) {
System.out.println(temp);
}
}
/**
* 按编号删除元素
* @param no 编号
*/
public void remove(int no) {
Node temp = head;
while (temp.next != null) {
if (temp.next.no == no) {
temp.next = temp.next.next;
--size;
return;
}
temp = temp.next;
}
System.out.println("你要删除的编号不存在");
}
/**
* 按下标修改元素
* @param index
* @param name
*/
public void update(int index, String name) {
if (index >= size || index < 0) {
System.out.println("索引越界");
return;
}
Node temp = head;
while ((temp = temp.next) != null) {
if (index-- == 0) {
temp.name = name;
break;
}
}
}
/**
* 按下标获取元素
* @param index
* @return
*/
public String get(int index) {
if (index >= size || index < 0) {
System.out.println("索引越界");
return null;
}
Node temp = head;
while ((temp = temp.next) != null) {
if (index-- == 0) {
return temp.name;
}
}
return null;
}
}
class Node {
int no;//编号
String name;
Node next;
public Node() {
}
@Override
public String toString() {
return "Node{" +
"no=" + no +
", name='" + name + '\'' + "}";
}
public Node(int no, String name) {
this.no = no;
this.name = name;
}
}