链表-C-双端链表

package e_link.C_FirstLastList;


/**
 * 双端链表:增加对最后一个链点的引用
 * 注意事项
 * 插入头尾时考虑链表是否为空,若是则为first或者last赋值
 * 删除时注意链表下一个元素是否为空,若是last为null
 * 局限性:
 * 无法删除最后一个链接点,因为没有引用指向倒数第二个链接点。倘若最后一个连接点被删除,倒数第二个的next应该为null。
 * @author Administrator
 *
 *
 */
public class LinkListApp {
public static void main(String[] args) {
FirstLastList theList = new FirstLastList();
//表头插入数据颠倒顺序
theList.insertFirst(10);
theList.insertFirst(20);
theList.insertFirst(30);
theList.insertFirst(40);


//表尾插入数据不会颠倒
theList.insertLast(50);
theList.insertLast(60);
theList.insertLast(70);


theList.displaysList();
System.out.println("------------");
theList.deleteFirst();
theList.deleteFirst();
theList.deleteFirst();


theList.displaysList();


}


}package e_link.C_FirstLastList;


public class Link {
public long dData;
public Link next;


public Link(long d) {
dData=d;
}
public void displayink(){
System.out.println(dData);
}
}package e_link.C_FirstLastList;


public class FirstLastList {
private Link first;
private Link last;


public FirstLastList() {
first = null;
last = null;
}


public boolean isEmpty() {
return first == null;
}


/*
* 第一个插入数据,考虑链表空,last要赋值
*/
public void insertFirst(long dd) {
Link newLink = new Link(dd);
if (isEmpty())
last = newLink;
newLink.next = first;
first = newLink;
}


/*
* 最后一个插入数据,考虑链表空,first要赋值

*/
//不设置else的话,last.next = newLink;有问题
public void insertLast(long dd) {
Link newLink = new Link(dd);
if (isEmpty())
first = newLink;
else
last.next = newLink;
last = newLink;
}


/*
* 删除链表第一个对象,并返回第一个值,考虑first.next==null
*/
public long deleteFirst() {
long temp = first.dData;
if (first.next == null)
last = null;
first = first.next;
return temp;
}


public void displaysList() {
Link current = first;
while (current != null) {
current.displayink();
current = current.next;
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值