Skip to content

Commit f573aa9

Browse files
author
chenweijie
committed
添加双端链表和双向链表
1 parent 02962dc commit f573aa9

File tree

2 files changed

+243
-0
lines changed

2 files changed

+243
-0
lines changed
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
package com.chen.dataStructure.linknode;
2+
3+
/**
4+
* 双端队列
5+
*
6+
* @author : chen weijie
7+
* @Date: 2019-03-13 11:12 PM
8+
*/
9+
public class DoublePointLinkedList {
10+
11+
12+
private Node head;
13+
14+
private Node tail;
15+
16+
private int size;
17+
18+
19+
private class Node {
20+
21+
private Object data;
22+
23+
private Node next;
24+
25+
public Node(Object data) {
26+
this.data = data;
27+
}
28+
}
29+
30+
31+
public DoublePointLinkedList() {
32+
this.head = null;
33+
this.tail = null;
34+
this.size = 0;
35+
}
36+
37+
38+
/**
39+
* 头部添加节点
40+
*
41+
* @param data
42+
*/
43+
public void addHead(Object data) {
44+
45+
Node node = new Node(data);
46+
47+
//如果链表为空,那么头节点和尾节点都是该新增节点
48+
if (size == 0) {
49+
size = 0;
50+
head = node;
51+
tail = node;
52+
} else {
53+
node.next = head;
54+
head = node;
55+
size++;
56+
}
57+
}
58+
59+
60+
public void addTail(Object data) {
61+
62+
Node node = new Node(data);
63+
64+
//如果链表为空,那么头节点和尾节点都是该新增节点
65+
if (size == 0) {
66+
size = 0;
67+
head = node;
68+
tail = node;
69+
} else {
70+
node.next = tail;
71+
tail = node;
72+
size++;
73+
}
74+
75+
}
76+
77+
78+
/**
79+
* 删除头节点
80+
*
81+
* @return
82+
*/
83+
public boolean deleteHead() {
84+
85+
if (size == 0) {
86+
return false;
87+
}
88+
89+
if (head.next == null) {
90+
head = null;
91+
tail = null;
92+
} else {
93+
head = head.next;
94+
}
95+
size--;
96+
return true;
97+
}
98+
99+
100+
/**
101+
* 判断是否为空
102+
*
103+
* @return
104+
*/
105+
public boolean isEmpty() {
106+
return (size == 0);
107+
}
108+
109+
/**
110+
* 获得链表的节点个数
111+
*
112+
* @return
113+
*/
114+
public int getSize() {
115+
return size;
116+
}
117+
118+
/**
119+
* 显示节点信息
120+
*/
121+
122+
public void display() {
123+
if (size > 0) {
124+
Node node = head;
125+
int tempSize = size;
126+
if (tempSize == 1) {//当前链表只有一个节点
127+
System.out.println("[" + node.data + "]");
128+
return;
129+
}
130+
while (tempSize > 0) {
131+
if (node.equals(head)) {
132+
System.out.print("[" + node.data + "->");
133+
} else if (node.next == null) {
134+
System.out.print(node.data + "]");
135+
} else {
136+
System.out.print(node.data + "->");
137+
}
138+
node = node.next;
139+
tempSize--;
140+
}
141+
System.out.println();
142+
} else {//如果链表一个节点都没有,直接打印[]
143+
System.out.println("[]");
144+
}
145+
}
146+
147+
148+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package com.chen.dataStructure.linknode;
2+
3+
/**
4+
* 双向链表
5+
*
6+
* @author : chen weijie
7+
* @Date: 2019-03-13 11:49 PM
8+
*/
9+
public class TwoWayLinkedList {
10+
11+
12+
private int size;
13+
14+
private Node head;
15+
16+
private Node tail;
17+
18+
19+
public class Node {
20+
21+
private Object data;
22+
23+
private Node next;
24+
25+
private Node prew;
26+
27+
28+
public Node(Object data) {
29+
this.data = data;
30+
}
31+
}
32+
33+
34+
public TwoWayLinkedList() {
35+
this.size = 0;
36+
this.head = null;
37+
this.tail = null;
38+
}
39+
40+
41+
public void addHead(Object data) {
42+
43+
Node node = new Node(data);
44+
if (size == 0) {
45+
head = node;
46+
tail = node;
47+
} else {
48+
head.prew = node;
49+
node.next = head;
50+
head = node;
51+
}
52+
53+
size++;
54+
}
55+
56+
57+
public void addTail(Object data) {
58+
59+
Node node = new Node(data);
60+
if (size == 0) {
61+
head = node;
62+
tail = node;
63+
} else {
64+
node.prew = tail;
65+
tail.next = node;
66+
tail = node;
67+
}
68+
size++;
69+
}
70+
71+
72+
public Node deleteHead() {
73+
74+
Node temp = head;
75+
if (size > 0) {
76+
head = head.next;
77+
head.prew = null;
78+
size--;
79+
}
80+
return temp;
81+
}
82+
83+
public Node deleteTail() {
84+
85+
Node temp = tail;
86+
if (size > 0) {
87+
tail = head.prew;
88+
tail.next = null;
89+
size--;
90+
}
91+
return temp;
92+
}
93+
94+
95+
}

0 commit comments

Comments
 (0)