Queue源码更新 · EulerFormula/javaStructures@b635475 · GitHub
Skip to content

Commit b635475

Browse files
committed
Queue源码更新
1 parent 1a59a46 commit b635475

9 files changed

Lines changed: 668 additions & 6 deletions

File tree

src/com/zejian/structures/LinkedList/MyCollection/MylinkeList.java

Lines changed: 5 additions & 5 deletions
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.zejian.structures.LinkedList.MyCollection;
2+
3+
import java.io.Serializable;
4+
import java.util.Iterator;
5+
import java.util.ListIterator;
6+
7+
/**
8+
* Created by zejian on 2016/12/3.
9+
* Blog : http://blog.csdn.net/javazejian [原文地址,请尊重原创]
10+
* 排序list的简单实现
11+
*/
12+
public class SortMyLinkedList<T extends Comparable<? extends T>> extends MylinkeList<T> implements Serializable {
13+
14+
private static final long serialVersionUID = -4783131709270334156L;
15+
16+
@Override
17+
public boolean add(T data) {
18+
if(data==null)
19+
throw new NullPointerException("data can\'t be null");
20+
21+
Comparable cmp =data;//这里需要转一下类型,否则idea编辑器上检验不通过.
22+
23+
if(this.isEmpty() || cmp.compareTo(this.last.prev.data) > 0){
24+
return super.add(data);//直接尾部添加,last不带数据的尾结点
25+
}
26+
27+
Node<T> p=this.first.next;
28+
//查找插入点
29+
while (p!=null&&cmp.compareTo(p.data)>0)
30+
p=p.next;
31+
32+
Node<T> q=new Node<>(p.prev,data,p);
33+
p.prev.next=q;
34+
p.prev=q;
35+
36+
size++;
37+
//记录修改
38+
modCount++;
39+
40+
return true;
41+
}
42+
43+
/**
44+
* 不根据下标插入,只根据比较大小插入
45+
* @param index
46+
* @param data
47+
*/
48+
@Override
49+
public void add(int index, T data) {
50+
this.add(data);
51+
}
52+
53+
54+
/**
55+
* 未实现
56+
* @param index
57+
* @return
58+
*/
59+
@Override
60+
public ListIterator<T> listIterator(int index) {
61+
return null;
62+
}
63+
64+
/**
65+
* 未实现
66+
* @return
67+
*/
68+
@Override
69+
public Iterator<T> iterator() {
70+
return null;
71+
}
72+
73+
//测试
74+
public static void main(String[] args){
75+
SortMyLinkedList<Integer> list=new SortMyLinkedList<>();
76+
list.add(50);
77+
list.add(40);
78+
list.add(80);
79+
list.add(20);
80+
print(list);
81+
}
82+
83+
public static void print(SortMyLinkedList mylinkeList){
84+
for (int i=0;i<mylinkeList.size();i++) {
85+
System.out.println("i->"+mylinkeList.get(i));
86+
}
87+
}
88+
}

src/com/zejian/structures/LinkedList/doubleLinked/LoopHeadDILinkedList.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99
public class LoopHeadDILinkedList<T> implements ILinkedList<T> {
1010

11-
protected DNode<T> head; //不带数据的头结点
11+
public DNode<T> head; //不带数据的头结点
1212
// protected DNode<T> tail; //指向尾部的指针
1313

1414
public LoopHeadDILinkedList(){

src/com/zejian/structures/LinkedList/doubleLinked/SortLoopHeadDIlinkedList.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public boolean add(T data) {
3636
return true;
3737
}
3838

39+
3940
public static void main(String[] args){
4041
SortLoopHeadDIlinkedList<Integer> list=new SortLoopHeadDIlinkedList<>();
4142
list.add(50);
Lines changed: 150 additions & 0 deletions

0 commit comments

Comments
 (0)