一、线性表
1. 链表
public class LinkedListDemo {
public static void main(String[] args) {
SingleLinkedList list = new SingleLinkedList();
list.sortAdd(new LinkNode(1, "aaa", "bbb"));
list.sortAdd(new LinkNode(2, "bbb", "ccc"));
list.sortAdd(new LinkNode(5, "bbb", "ccc"));
list.sortAdd(new LinkNode(3, "ccc", "ddd"));
list.setNode(new LinkNode(2, "kkkk", "sss"));
list.remove(1);
list.list();
}
}
class SingleLinkedList {
private final LinkNode head = new LinkNode(0, "", "");
private int size;
public void addTail(LinkNode linkNode) {
LinkNode temp = head;
while (true) {
if (temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = linkNode;
size++;
}
public void sortAdd(LinkNode linkNode) {
if (head.next == null) {
addTail(linkNode);
return;
}
LinkNode temp = head;
boolean flag = false;
while (true) {
if (temp.next == null) {
break;
}
if (temp.next.no > linkNode.no) {
break;
}
if (temp.next.no == linkNode.no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
System.out.println("编号冲突");
} else {
linkNode.next = temp.next;
temp.next = linkNode;
size++;
}
}
public void remove(int index) {
boolean flag = false;
LinkNode temp = head;
while (true) {
if (temp.next == null) {
break;
}
if (temp.next.no == index) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
size--;
temp.next = temp.next.next;
} else {
System.out.println("删除节点不存在");
}
}
public void setNode(LinkNode linkNode) {
if (head.next == null) {
System.out.println("链表为空");
return;
}
boolean flag = false;
LinkNode tmp = head.next;
while (true) {
if (tmp == null) {
flag = false;
break;
}
if (tmp.no == linkNode.no) {
flag = true;
break;
}
tmp = tmp.next;
}
if (flag) {
tmp.name = linkNode.name;
tmp.nickname = linkNode.nickname;
} else {
System.out.println("没有找到");
}
}
public int size() {
return size;
}
public void list() {
LinkNode temp = head;
while (temp.next != null) {
temp = temp.next;
System.out.println(temp.toString());
}
}
}