您的位置:首页 > 编程语言 > Java开发

[Java]单项链表与双端链表[原]

2016-01-25 16:23 399 查看
package com.black.datastructures.link;

/**
* 链接点
*
* @author BlackWinter
*
* @date 2010-7-7 下午10:45:24
*
* @file com.black.datastructures.link.Link.java
*
* @version 1.0
*/
public class Link {
public int key;

public double value;

public Link next;

public Link(int id, double date) {
this.key = id;
value = date;
}

public void displayLink() {
System.out.printf("{%s,%s}\n", key, value);
}
}


package com.black.datastructures.link;

/**
* 单向链表
*
* @author BlackWinter
*
* @date 2010-7-7 下午10:35:10
*
* @file com.black.datastructures.link.LinkList.java
*
* @version 1.0
*/
public class LinkList {
private Link first;

public LinkList() {
first = null;
}

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

/* 在链表头部插入新节点 */
public void insertFirst(int id, double date) {
Link link = new Link(id, date);
link.next = first;
first = link;
}

/* 删除链表的头部节点 */
public Link deleteFirst() {
Link temp = first;
first = first.next;
return temp;
}

/* 根据key查询指定的链接点 */
public Link find(int key) {
Link current = first;
while (current.key != key) {
if (current.next == null)
return null;
else
current = current.next;
}
return current;
}

/* 根据key删除指定节点 */
public Link delete(int key) {
Link current = first;
Link previous = first;
while (current.key != key) {
if (current.next == null)
return null;
else {
current = current.next;
previous = current;
}
}
if (current == first)
first = first.next;
else
previous.next = current.next;
return current;
}

/* 显示链表的所有节点 */
public void displayList() {
System.out.println("First --> Last:");
Link current = first;
while (null != current) {
current.displayLink();
current = current.next;
}
}
}


package com.black.datastructures.link;

/**
* 双端链表
*
* @author BlackWinter
*
* @date 2010-7-11 下午09:09:12
*
* @file com.black.datastructures.link.DouEndLinkList.java
*
* @version 1.0
*/
public class DouEndLinkList {
private Link first;

private Link last;

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

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

public void insertFirst(int id, double date) {
Link newLink = new Link(id, date);
if (isEmpty())
last = newLink;
newLink.next = first;
first = newLink;
}

public void insertLast(int id, double date) {
Link newLink = new Link(id, date);
if (isEmpty())
first = newLink;
else
last.next = newLink;
last = newLink;
}

public void display() {
System.out.println("List (first --> last):");

Link current = first;
while (null != current) {
current.displayLink();
current = current.next;
}
}
}




阅读(558) | 评论(0) | 转发(0) |

0
上一篇:没有了

下一篇:国外威客网站大盘点

相关热门文章

A sample .exrc file for vi e...

游标的特征

IBM System p5 服务器 HACMP ...

busybox的httpd使用CGI脚本(Bu...

Solaris PowerTOP 1.0 发布

linux dhcp peizhi roc

关于Unix文件的软链接

求教这个命令什么意思,我是新...

sed -e "/grep/d" 是什么意思...

谁能够帮我解决LINUX 2.6 10...

给主人留下些什么吧!~~

评论热议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: