8000 Update · fibers/ex-algorithm@0b298ab · GitHub
[go: up one dir, main page]

Skip to content

Commit 0b298ab

Browse files
committed
Update
1 parent 562eaf1 commit 0b298ab

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
package com.fibers.algorithm.datastructure;
2+
3+
/**
4+
* JD Interview
5+
*/
6+
interface MyLinkedList {
7+
public ItemObject find(int value);
8+
9+
public void remove(int value);
10+
11+
public void add(int value);
12+
13+
public int size();
14+
}
15+
16+
class ItemObject {
17+
int intValue;
18+
ItemObject next;
19+
20+
public ItemObject(int _intValue) {
21+
intValue = _intValue;
22+
}
23+
24+
public ItemObject getNext() {
25+
return next;
26+
}
27+
28+
public void setNext(ItemObject _next) {
29+
next = _next;
30+
}
31+
32+
33+
public int getItemValue() {
34+
return intValue;
35+
}
36+
37+
public boolean isEqual(int _intValue) {
38+
return (intValue == _intValue) ? true : false;
39+
}
40+
}
41+
42+
public class LinkedList implements MyLinkedList {
43+
44+
private ItemObject head;
45+
private ItemObject tail;
46+
private int size;
47+
48+
public LinkedList() {
49+
this.head = null;
50+
this.tail = null;
51+
this.size = 0;
52+
}
53+
54+
@Override
55+
public ItemObject find(int value) {
56+
ItemObject p = head;
57+
while (p != null) {
58+
if (p.isEqual(value)) {
59+
return p;
60+
}
61+
p = p.getNext();
62+
}
63+
return null;
64+
}
65+
66+
@Override
67+
public void remove(int value) {
68+
//该方法没说明是否移除多个值等于value的节点,默认全部移除。
69+
while (head != null && head.isEqual(value)) {
70+
head = head.getNext();
71+
size--;
72+
}
73+
74+
if (size == 0) {
75+
head = null;
76+
tail = null;
77+
return;
78+
}
79+
80+
ItemObject prev = head;
81+
ItemObject cur = head.getNext();
82+
83+
while (cur != null) {
84+
if (cur.isEqual(value)) {
85+
prev.setNext(cur.getNext());
86+
size--;
87+
} else {
88+
prev = cur;
89+
}
90+
cur = cur.getNext();
91+
}
92+
}
93+
94+
@Override
95+
public void add(int value) {
96+
if (size < Integer.MAX_VALUE) {
97+
size++;
98+
if (tail == null) {
99+
tail = new ItemObject(value);
100+
head = tail;
101+
} else {
102+
tail.setNext(new ItemObject(value));
103+
tail = tail.getNext();
104+
}
105+
}
106+
// size定义的是int,保证最大长度不溢出,个人建议这儿抛出异常会好一点,
107+
// 但由于MyLinkedList定义的该方法没有抛出异常的,所以这儿只能return.
108+
return;
109+
}
110+
111+
@Override
112+
public int size() {
113+
return size;
114+
}
115+
}

0 commit comments

Comments
 (0)
0