bưu kiện
com.zxy.lianbiao;
/**
* @Author Zxy
* @Ngày 2021/2/4 20:11
* @Version 1.0
*/
/**
* Vùng chứa thực hiện truy cập phần tử dựa trên danh sách liên kết đôi
*
* @param
*/
công cộng
lớp học
Danh sách liên kết của tôi
thực hiện
Danh sách của tôi {
/**
* Xác định đối tượng nút danh sách liên kết đôi
*/
lớp học
Nút {
Và mục;
Nút trước;
Nút tiếp theo;
công cộng
Node(Node trước, mục E, Node tiếp theo) {
cái này
.item = mục;
cái này
.prev = trước;
cái này
.next = tiếp theo;
}
}
riêng tư
Đầu nút;
riêng tư
Đuôi nút;
riêng tư
số nguyên
kích cỡ;
/**
* Phương pháp thêm phần tử vào danh sách liên kết đôi
*
* Phần tử @param
*/
@Ghi đè
công cộng
vô hiệu
thêm(phần tử E) {
linkLast(phần tử);
}
/**
* Thêm đối tượng nút vào cuối danh sách liên kết đôi
*/
riêng tư
vô hiệu
linkLast(phần tử E) {
Nút t =
cái này
.đuôi;
nút nút =
mới
Node<>(t, phần tử,
vô giá trị
);
cái này
.tail = nút;
nếu như
(t ==
vô giá trị
) {
cái này
.head = nút;
}
khác
{
t.next = nút;
}
cái này
.size++;
}
/**
* Lấy phần tử dựa trên vị trí đã chỉ định
*
* @param chỉ mục
* @trở lại
*/
@Ghi đè
công cộng
E lấy(
số nguyên
chỉ số) {
cái này
.checkIndex(chỉ mục);
nút nút =
cái này
.getNode(chỉ mục);
trở lại
node. mục;
}
/**
* Xác minh tính hợp lệ của chỉ mục
*/
riêng tư
vô hiệu
kiểm traIndex(
số nguyên
chỉ số) {
nếu như
(!(chỉ số >=
0
&& chỉ mục <
cái này
.kích cỡ)) {
ném
mới
Ngoại lệ IndexOutOfBounds();
}
}
/**
* Lấy đối tượng nút được chỉ định dựa trên vị trí
*/
riêng tư
Nút getNode(
số nguyên
chỉ số) {
nếu như
(chỉ số < (
cái này
.kích thước >>
1
)) {
Nút nút =
cái này
.cái đầu;
vì
(
số nguyên
tôi =
0
; i < chỉ số; i++) {
node = node.next;
}
trở lại
nút;
}
khác
{
Nút nút =
cái này
.đuôi;
vì
(
số nguyên
tôi =
cái này
.kích cỡ -
1
; i > chỉ số; i--) {
node = node.prev;
}
trở lại
nút;
}
}
/**
* Trả về số phần tử
*
* @trở lại
*/
@Ghi đè
công cộng
số nguyên
kích cỡ() {
trở lại
cái này
.kích cỡ;
}
/**
* Xóa phần tử
*
* @param chỉ mục
* @trở lại
*/
@Ghi đè
công cộng
E xóa(
số nguyên
chỉ số) {
cái này
.checkIndex(chỉ mục);
Nút nút =
cái này
.getNode(chỉ mục);
Mục E = (E) node.item;
nếu như
(node. trước ==
vô giá trị
) {
cái này
.head = node.next;
}
khác
{
node.prev.next = node.next;
}
nếu như
(node.next ==
vô giá trị
) {
cái này
.tail = node.prev;
}
khác
{
node.next.prev = node.prev;
}
node.next =
vô giá trị
;
node.prev =
vô giá trị
;
node.item =
vô giá trị
;
cái này
.size--;
trở lại
mục;
}
/**
* Thêm một phần tử vào đầu danh sách liên kết đôi
*/
công cộng
vô hiệu
addFirst(phần tử E) {
cái này
.linkFirst(phần tử);
}
/**
* Thêm một phần tử vào đầu danh sách liên kết
*
* Phần tử @param
*/
công cộng
vô hiệu
linkFirst(phần tử E) {
Đầu nút =
cái này
.cái đầu;
Nút eNode =
mới
Nút<>(
vô giá trị
, phần tử, đầu);
cái này
.head = eNode;
nếu như
(đầu ==
vô giá trị
) {
cái này
.tail = eNode;
}
khác
{
head.prev = eNode;
}
cái này
.size++;
}
/**
* Thêm phần tử vào cuối danh sách liên kết
*
* Phần tử @param
*/
công cộng
vô hiệu
addLast(phần tử E) {
cái này
.linkLast(phần tử);
}
công cộng
tĩnh
vô hiệu
main(String[] args) {
Danh sách MyDoublyLinkedList =
mới
Danh sách liên kết của tôi<>();
danh sách.thêm(
"Một"
);
danh sách.thêm(
"b"
);
danh sách.thêm(
"c"
);
danh sách.thêm(
"đ"
);
danh sách.thêm(
"e"
);
System.out.println(danh sách.xóa(
2
));
System.out.println(kích thước danh sách);
vì
(
số nguyên
tôi =
0
; i < danh sách.kích thước(); i++) {
System.out.println(danh sách.get(i));
}
}
}
Tôi là một lập trình viên xuất sắc, rất giỏi!