单链表

单链表的增删改查 

该单链表有头节点head,其位置为0,第一个带数据的首节点位置为1

 1 public class LinkList {
 2     private class Node {
 3         int val;
 4         Node next;
 5 
 6         Node(int x) {
 7             val = x;
 8         }
 9 
10         Node() {
11         }
12     }
13 
14     private Node head = new Node();
15     public int length;//单链表的长度
16 
17     public LinkList() {
18     }
19 
20     //获取元素的值
21     public int get(int place) {
22         if (place < 0 || place > length) {
23             System.out.println("获取的位置不合法");
24         } else {
25             Node tmp = head;
26             for (int i = 0; i < place; i++) {
27                 tmp = tmp.next;
28             }
29             return tmp.val;
30         }
31         return 0;
32     }
33 
34 
35     //末尾添加元素
36     public void add(int i) {
37         Node tmp = head;
38         while (tmp.next != null) {
39             tmp = tmp.next;
40         }
41         tmp.next = new Node(i);
42         length++;
43     }
44 
45     //指定位置前添加,head除外,即从首节点开始(第一个数据节点)
46     public void insert(int place, int n) {
47         if (place < 1 || place > length) {
48             System.out.println("插入位置不合法");
49         } else {
50             Node tmp = head;
51             for (int i = 0; i < place - 1; i++) {
52                 tmp = tmp.next;
53             }
54             Node node = new Node(n);
55             node.next = tmp.next;
56             tmp.next = node;
57             length++;
58         }
59     }
60 
61     //修改指定位置的值
62     public void set(int place, int n) {
63         if (place < 1 || place > length) {
64             System.out.println("修改位置不合法");
65         } else {
66             Node tmp = head;
67             for (int i = 0; i < place; i++) {
68                 tmp = tmp.next;
69             }
70             tmp.val = n;
71         }
72     }
73 
74     //删除指定位置
75     public void delete(int place) {
76         if (place < 1 || place > length) {
77             System.out.println("删除位置不和法");
78         } else {
79             Node tmp = head;
80             for (int i = 0; i < place - 1; i++) {
81                 tmp = tmp.next;
82             }
83             tmp.next = tmp.next.next;
84             length--;
85         }
86     }
87 
88     //遍历
89     public void forSearch() {
90         Node tmp = head;
91         while (tmp.next != null) {
92             System.out.println(tmp.next.val);
93             tmp = tmp.next;
94         }
95     }
96 }

 

上一篇:【经典排序算法】总集


下一篇:python之while循环