虽然链表有序,但是它是以节点形式存储的,位置不连续。每个节点存data和下一个节点的地址
链表分为有头节点的和没头节点的。
示例代码:
节点设置:
package single_link;
public class Node {
private int num;
private String name;
private String nickname;
private Node next;
public Node(int num,String nickname,String name) {
this.name=name;this.num=num;this.nickname=nickname;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public String toString() {
return nickname+name;
}
}
链表设置:
package single_link;
public class linked_list {
private Node headNode=new Node(0,"","") ;
//新建链表时加入元素,加到链表末尾
public void add(Node newNode) {
Node tmp=headNode;
while (true) {
if (tmp.getNext()==null) {
break;
} else {
tmp=tmp.getNext();
}
}
tmp.setNext(newNode);
}
//展示链表
public void showList() {
if (headNode==null) {
System.out.println("null");
}
System.out.println(headNode);
Node tmp=headNode;
while (tmp.getNext()!=null) {
System.out.println(tmp.getNext());
tmp=tmp.getNext();
}
}
//将一个节点以num的顺序加入到链表中
public void insert(Node newNode) {
Node tmp=headNode;
while (tmp.getNum()<newNode.getNum()&&tmp.getNext()!=null) {
if (tmp.getNext().getNum()>newNode.getNum()) {
newNode.setNext(tmp.getNext());
tmp.setNext(newNode);
return;
}else {
tmp=tmp.getNext();
}
}
tmp.setNext(newNode);
}
//修改某个编号
public void modify(int num,String nickname,String name) {
Node tmp=headNode;
while (tmp!=null) {
if (tmp.getNum()==num) {
tmp.setNickname(nickname);
tmp.setName(name);
return;
} else {
tmp=tmp.getNext();
}
}
System.out.println("查无此人");
}
//删除某个编号
public void del(int num) {
if (headNode.getNum()==num) {
headNode=headNode.getNext();
return;
}
Node tmp=headNode;
while (tmp.getNext()!=null) {
if (tmp.getNext().getNum()==num) {
tmp.setNext(tmp.getNext().getNext());
return;
} else {
tmp=tmp.getNext();
}
}
System.out.println("查无此人");
}
}