自己做的笔记就不想就懒得再打一遍了
public class SingleLinkedListDemo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Node a1 = new Node(1,10);
Node a2 = new Node(2,20);
Node a3 = new Node(3,30);
Node a4 = new Node(3,40);
SingleLinkedList singlelinklist =new SingleLinkedList();
singlelinklist.addByOrder(a1);
singlelinklist.addByOrder(a3);
singlelinklist.addByOrder(a2);
singlelinklist.list();
System.out.println();
singlelinklist.update(a4);
singlelinklist.list();
System.out.println();
singlelinklist.del(3);
singlelinklist.list();
}
}
class Node{ //创建节点
public int data;
public int no ; //编号
public Node next;
public Node(int n,int m) {
this.no =n;
this.data=m;
}
@Override
public String toString() {
return "Node [No="+no+",data="+data+"]";
}
}
class SingleLinkedList{
private Node head =new Node(0,0);
public void add(Node newNode) { //无序的添加
Node temp =head;
while(true) {
if(temp.next==null) {
break;
}
temp=temp.next;
}
temp.next= newNode;
}
public void addByOrder(Node newnode) { //按照编号添加
Node temp =head;
boolean flag = false; //标志添加的编号是否存在
while(true) {
if(temp.next==null) { //temp已经在最后
break;
}
if(temp.next.no>newnode.no) { //位置找到在temp后面插入
break;
}else if(temp.next.no==newnode.no) { //编号存在
flag=true;
break;
}
temp =temp.next;
}
if(flag) {
System.out.println("编号为"+newnode.no+"已存在,无法加入");
}else {
newnode.next=temp.next;
temp.next=newnode;
}
}
public void update(Node newnode) {
if(head.next==null) {
System.out.println("链表为空");
return;
}
Node temp =head.next;
boolean flag =false; //表示是否找到该节点
while(true) {
if(temp==null) { // 表示链表已经遍历完了
break;
}
if(temp.no==newnode.no) {
flag=true;
break;
}
temp=temp.next;
}
if(flag) {
temp.data=newnode.data;
}else {
System.out.println("未找到该节点");
}
}
public void del(int no) {
Node temp =head;
boolean flag =false; //标志是否找到要删除的节点
while(true) {
if(temp.next==null) {
break;
}if(temp.next.no==no) { //删除的节点找到了
flag =true;
break;
}
temp=temp.next;
}
if(flag) {
temp.next =temp.next.next;
}else {
System.out.println("删除节点不存在");
}
}
public void list() {
if(head.next ==null) {
System.out.println("链表为空");
return;
}
Node temp =head.next;
while(true) {
if(temp==null) {
break;
}
System.out.println(temp);
temp=temp.next;
}
}
}