附上上一节的Java代码
1 package LinkListDemo2;
2
3 public class LinkList {
4
5 int data;
6 LinkList next;
7
8 /**
9 * 链表的初始化
10 */
11 public void initLink(LinkList L) {
12 L = new LinkList();
13 L.next = null;
14 }
15
16 /**
17 * 链表的创建(头插法),n插入的元素个数
18 */
19 public void creatListHead(LinkList L, int n) {
20 InitLink(L);
21 for (int i = 0; i < n; i++) {
22 LinkList linkList = new LinkList();
23 linkList.data = i;
24 linkList.next = L.next;
25 L.next = linkList;
26 }
27 }
28
29 /**
30 * 链表的创建(尾插法),n插入的元素个数
31 */
32 public void creatListTail(LinkList L, int n) {
33 InitLink(L);
34 LinkList P;
35 P = L;
36 for (int i = 0; i < n; i++) {
37 LinkList linkList = new LinkList();
38 linkList.data = i;
39 P.next = linkList; // 注意:等号两个不能互调位置
40 P = linkList; // P移动到新的节点位置
41 }
42 P.next = null;
43 }
44
45 /**
46 * 获取链表的长度
47 */
48 public int getLengthList(LinkList L) {
49 int count = 0;
50 LinkList P;
51 P = L.next;
52 while (P != null) {
53 P = P.next;
54 count++;
55 }
56 return count;
57 }
58
59 /**
60 * 链表的插入 ,n表示插入的位置
61 */
62 public void insertList(LinkList L, int n, int num) {
63 int count = 0;
64 LinkList p, s;
65 p = L;
66 count = 1;
67 while (p.next != null && count < n) { // 将p移动到插入的元素的上一位
68 p = p.next;
69 count++;
70 }
71 if (p == null || count > n) {
72 System.out.println("不能插入!!");
73 }
74 s = new LinkList();
75 s.data = num;
76 s.next = p.next;
77 p.next = s;
78 }
79
80 /**
81 * 链表的删除 ,n表示删除的位置
82 */
83 public void deleteListElem(LinkList L, int n) {
84 int count = 0;
85 LinkList p;
86 p = L;
87 count = 1;
88 while (p.next != null && count < n) { // 将p移动到插入的元素的上一位
89 p = p.next;
90 count++;
91 }
92 if (p == null || count > n) {
93 System.out.println("非法删除元素!!");
94 }
95 p.next = p.next.next; // Java有着高尚的情操 gc(垃圾回收机制),所以自动内存释放
96 }
97
98 /**
99 * 清空链表
100 */
101 public void clearList(LinkList L) {
102 LinkList p, q;
103 p = L.next;
104 while (p != null) {
105 q = p.next; // 调换
106 p = null; // 清空
107 p = q; // 重新给p赋值,相当于p移动到下一位
108 }
109 L.next = null; // 头节点重新指向空
110 }
111
112 /**
113 * 前提条件:这个数存在 查找特定的元素 ,查找第四个位置的值,并返回
114 */
115 public int getElem(LinkList L, int n) {
116 LinkList p;
117 p = L.next;
118 int count = 1;
119 while (p != null) {
120 if (count == n)
121 return p.data;
122 ++count;
123 p = p.next;
124 }
125 return 0;
126 }
127
128 /**
129 * 判断链表是否为空
130 */
131 public boolean elemptyList(LinkList L) {
132
133 if (L.next != null)
134 return false;
135 else
136 return true;
137 }
138
139 /**
140 * 遍历链表
141 */
142 void traverse(LinkList L) {
143 LinkList linkList;
144 linkList = L.next;
145 while (linkList != null) {
146 System.out.print(linkList.data + " ");
147 linkList = linkList.next;
148 }
149 }
150
151 }
测试类
1 package LinkListDemo2;
2
3 public class test {
4
5 public static void main(String[] args) {
6 LinkList linkList = new LinkList();
7 linkList.creatListHead(linkList, 5);
8 System.out.println("头插法--------------");
9 linkList.traverse(linkList);
10 System.out.println("");
11
12 System.out.println("尾插法--------------");
13 LinkList linkList2 = new LinkList();
14 linkList2.creatListTail(linkList2, 5);
15 linkList.traverse(linkList2);
16 System.out.println("");
17
18 System.out.println("链表2长度:--------------");
19 System.out.println(linkList2.getLengthList(linkList2));
20
21 System.out.println("在链表2的3位置上插入100:--------------");
22 linkList2.insertList(linkList2, 3, 100);
23 linkList.traverse(linkList2);
24 System.out.println("");
25
26 System.out.println("删除链表1号元素:--------------");
27 linkList.deleteListElem(linkList, 1);
28 linkList.traverse(linkList);
29 System.out.println("");
30
31 System.out.println("判断链表2是否为空:--------------");
32 System.out.println(linkList2.elemptyList(linkList2));
33 System.out.println("清空链表2:--------------");
34 linkList2.clearList(linkList2);
35
36 System.out.println("判断链表2是否为空:--------------");
37 System.out.println(linkList2.elemptyList(linkList2));
38
39 System.out.println("查找链表1的3位置的值:--------------");
40 System.out.println(linkList.getElem(linkList, 2));
41 }
42
43 }
截图:
完毕 - -