在这里插入代码片
package link01;
class Link{
public int iData;
public double dData;
public Link next;
public Link(int id, double dd) {
iData = id;
dData = dd;
}
public void displayLink() {
System.out.print("{" + iData + "," + dData + "}");
}
}
public class LinkList {
private Link first; // 引用链表的第一个引用
private Link last; // 引用链表的最后一个引用
public LinkList() {
first = null;
last = null;
}
public boolean isEmpty() {
return (first == null);
}
public void insertFirst( int id, double dd) {
Link newLink = new Link(id,dd);
if ( isEmpty() )
last = newLink;
newLink.next = first;
first = newLink;
}
public void insertLast(int id, double dd) {
Link newLink = new Link(id,dd);
if( isEmpty() ) { // 边界判断,如果是第一个插入的元素,则头尾都指向同一个元素。
first = newLink;
}
else
last.next = newLink;
last = newLink;
}
public Link deleteFirst() {
Link temp = first;
if( first.next == null ) // 边界,删除的是最后一个元素,last,first 都应该取消引用,让成为垃圾。
last = null;
first = first.next;
return temp;
}
public void displayList() {
System.out.println("List (first-->last)");
Link current = first;
while (current != null) {
current.displayLink();
current = current.next;
}
}
public Link find(int key) {
Link current = first;
while ( current.iData != key ) {
if ( current.next == null)
return null;
else
current = current.next;
}
return current;
}
public Link delete(int key){ // 删除idate == key 的link。 对于双端链表来说,有点问题。如果链表只有一个元素的话,last 没有取消对它的引用。
Link current = first;
Link previous = first;
while( current.iData != key) {
if( current.next == null )
return null;
previous = current;
current = current.next;
}
if ( current == first)
first = first.next;
else
previous.next = current.next;
return current;
}
}
> https://blog.csdn.net/SHENGJINLI1/article/details/83175802
java双端链表
最新推荐文章于 2024-08-10 17:57:54 发布