链表是以节点的方式来存储,是链式存储
链表的各个节点不一定是连续存储
链表分带头节点的链表和没有头结点的链表,需要根据实际情况确定
public class List2 {
public node head;
public List2() {
head = new node();
}
public void addTotail(node node) {
node p = head;
while(p.next!=null) {
p=p.next;
}
p.next = node;
}
public void addByOrder(node node) {
node p=head;
while(true) {
if(p.next==null) {
break;
}
if(p.next.data>node.data) {
break;
}
p=p.next;
}
node.next=p.next;
p.next=node;
}
public void delete(int no) {
boolean flag =false;
node p = head;
while(true) {
if(p.next==null) {
break;
}
if(p.next.data==no) {
flag=true;
break;
}
p=p.next;
}
if(flag) {
p.next=p.next.next;
}
}
public void traverse() {
if(head.next==null) {
System.out.println("链表为空");
}
node pNode = head.next;
while(pNode!=null) {
System.out.print(pNode.data+" ");
pNode=pNode.next;
}
System.out.println();
}
public static void main(String[] args) {
node node1 = new node(1);
node node2 = new node(2);
node node3 = new node(3);
node node4 = new node(4);
List2 list2 = new List2();
list2.addByOrder(node4);
list2.addByOrder(node3);
list2.addByOrder(node2);
list2.addByOrder(node1);
list2.traverse();
list2.delete(2);
list2.traverse();
}
}
class node {
int data;
node next;
public node() {
data = 0;
next = null;
}
public node(int data) {
this.data=data;
}
}