请选择 进入手机版 | 继续访问电脑版

刚打的双向链表

发表于 2016-08-11 19:52 显示全部楼层 20 290

class DoubleNode{

public DoubleNode prev;

public DoubleNode next;

public Object ele;

public DoubleNode(Object ele){

this.ele = ele;

}

public void printDoubleNode(){

System.out.println("ele " + ele);

}

}


class DoubleLinkList{

DoubleNode first;

DoubleNode last;

public int size;

public DoubleLinkList(){

first = null;

last = null;

}

public void insertFirst(Object ele){

DoubleNode node = new DoubleNode(ele);

if(size == 0){

first = node;

last = node;

}else {

first.prev = node;

node.next = first;

first = node;

}

size++;

}

public void insertLast(Object ele){

DoubleNode node = new DoubleNode(ele);

if(size == 0){

first = node;

last = node;

}else {

last.next = node;

node.prev = last;

last = node;

}

size ++;

}

public void insertBefore(Object newEle,Object oldEle){

DoubleNode newNode = new DoubleNode(newEle);

DoubleNode current = first;

DoubleNode previous = first;

for(int i = 0; i<size; i++){

if(!current.ele.equals(oldEle)){

if(current.next == null){

throw new IllegalArgumentException("找不到这个节点");

}

previous = current;

current = current.next;

}

}

if(current == first){

first.prev = newNode;

newNode.next = first;

first = newNode;

}else if (current == last) {

last.next = newNode;

newNode.prev = last;

last = newNode;

}else {

newNode.next = current;

newNode.prev = previous;

previous.next = newNode;

current.prev = newNode;

}

size ++;

}

public void insertAfter(Object newEle,Object oldEle){

DoubleNode newNode = new DoubleNode(newEle);

DoubleNode current = first;

for(int i = 0; i<size; i++){

if(!current.ele.equals(oldEle)){

if(current.next == null){

throw new IllegalArgumentException("找不到这个节点");

}

current = current.next;

}

}


newNode.next = current.next;

newNode.prev = current;

current.next.prev = newNode;

current.next = newNode;

size ++;

}

public DoubleNode delete(Object key){

DoubleNode current = first;

for(int i = 0; i<size; i++){

if(!current.ele.equals(key)){

if(current.next == null){

return null;

}

current = current.next;

}

}

if(current == first){

first = current.next;

first.prev = null;

}else if (current == last) {

last = current.prev;

last.next = null;

}else {

current.prev.next = current.next;

current.next.prev = current.prev;

}

size--;

return current;

}


@Override

public String toString() {

if(size == 0){

return "[]";

}

StringBuilder sb = new StringBuilder();

DoubleNode node = first;

sb.append("[");

for(int i =0; i<size; i ++){

sb.append(node.ele);

if( i != size-1){

sb.append(",");

}else {

sb.append("]");

}

node = node.next;

}

return sb.toString();

}

}


public class DoubleLinkListDemo {

public static void main(String[] args) {

DoubleLinkList doubleLinkList = new DoubleLinkList();

doubleLinkList.insertFirst(3);

doubleLinkList.insertFirst(2);

doubleLinkList.insertFirst(1);

doubleLinkList.insertLast(4);

doubleLinkList.insertLast(5);

System.out.println(doubleLinkList);

System.out.println("--------华丽的分割线--------");

try {

doubleLinkList.insertAfter(4.5, 4);

doubleLinkList.insertAfter(4.75, 4.5);

System.out.println(doubleLinkList);

} catch (IllegalArgumentException e) {

System.out.println(e.getMessage());

}

System.out.println("--------华丽的分割线--------");

try {

doubleLinkList.insertBefore(2.5, 3);

doubleLinkList.insertBefore(2.25, 2.5);

System.out.println(doubleLinkList);

} catch (IllegalArgumentException e) {

System.out.println(e.getMessage());

}

System.out.println("--------华丽的分割线--------");

doubleLinkList.delete(2.25);

doubleLinkList.delete(2.5);

doubleLinkList.delete(4.5);

doubleLinkList.delete(4.75);

System.out.println(doubleLinkList);

}

}


回复 使用道具
举报
崇拜

发表于 2017-04-05 17:25 显示全部楼层

回复 支持 反对 使用道具
举报
烟雨过客

发表于 2017-03-28 08:42 显示全部楼层

别人说是金子总要发光的,我就来看看。

回复 支持 反对 使用道具
举报
任嘉行

发表于 2017-03-26 05:53 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对 使用道具
举报
腐女大作战

发表于 2017-03-11 17:00 显示全部楼层

楼主你好

回复 支持 反对 使用道具
举报
做个有钱银

发表于 2017-03-09 05:08 显示全部楼层

回复 支持 反对 使用道具
举报
凌大胖纸

发表于 2017-02-26 03:04 显示全部楼层

以诚感人者,人亦诚而应。一点回复,敬请笑纳!

回复 支持 反对 使用道具
举报
南瑟1

发表于 2017-02-22 18:38 显示全部楼层

别人说是金子总要发光的,我就来看看。

回复 支持 反对 使用道具
举报
涅槃兰心

发表于 2017-02-19 23:53 显示全部楼层

支持!支持!!

回复 支持 反对 使用道具
举报
小受哥哥

发表于 2017-02-19 22:46 显示全部楼层

回复 支持 反对 使用道具
举报
12下一页

发表新文章
18819281908

小码哥达人

1

学分

245

学币

529

积分

小码哥达人

Rank: 4

积分
529

关注新浪微博关注小码哥教育公众号活动达人勋章小码哥Android学员勋章

Ta的主页 发消息
精华帖排行榜

精彩推荐

  • 关注小码哥教育