java链表实现上移下移_java实现链表

以下是我用java实现的数据结构中的链表package com.husiwang.LinkList;

/**

* Created by SiwangHu on 2015/2/1.

*/

public class Node {

private Object Data;  //数据缓冲区

private Node Next;    //下移结点

private Node Prior;   //前一结点

//无参构造函数

public Node(){

Data=null;

Next=null;

Prior=null;

}

//有参构造函数

public Node(Object data){

Data=data;

Next=null;

Prior=null;

}

//有参构造函数

public Node(Object data,Node next,Node prior){

Data=data;

Next=next;

Prior=prior;

}

//指定下移结点

public void setNext(Node next) {

Next = next;

}

//获取下移结点

public Node getNext() {

return Next;

}

//设置数据

public void setData(Object data) {

Data = data;

}

//获取数据

public Object getData() {

return Data;

}

//获取前一结点

public Node getPrior() {

return Prior;

}

//设置前一结点

public void setPrior(Node prior) {

Prior = prior;

}

@Override

public String toString() {

return "Node{" +

"Data=" + Data +

", Next=" + Next +

", Prior=" + Prior +

'}';

}

}

package com.husiwang.LinkList;

/**

* Created by SiwangHu on 2015/2/1.

*/

public class LinkList {

private Node Head;     //头结点

private int Length;   //链表结点数目

//无参构造函数

public LinkList(){

Head=new Node();

Length=0;

}

//插入链表末尾

public void Insert(Object data){

Node Move=Head,node=new Node(data);

while(Move.getNext()!=null){

Move=Move.getNext();

}

Move.setNext(node);

node.setPrior(Move);

Length++;

}

//在指定位置插入数据

public void Insert(int Index,Object data){

if(Index

Node Move=Head,node=new Node(data);

for(int i=0;i

Move=Move.getNext();

}

node.setNext(Move.getNext());

Move.getNext().setPrior(node);

Move.setNext(node);

node.setPrior(Move);

Length++;

}

else{

throw new RuntimeException("下标过界");

}

}

//移除最后一个元素

public void Remove(){

if(!IsEmpty()) {

Node Move = Head;

while (Move.getNext() != null) {

Move = Move.getNext();

}

Move.getPrior().setNext(null);

Move.setPrior(null);

Length--;

}

}

//移除指定位置的元素

public void Remove(int Index){

if(!IsEmpty()) {

if (Index 

if(Length==1){

Head.getNext().setPrior(null);

Head.setNext(null);

Length--;

return;

}

if(Length-1==Index){

Remove();

return;

}

Node Move = Head;

for (int i = 0; i 

Move = Move.getNext();

}

Move.getNext().getNext().setPrior(Move);

Move.setNext(Move.getNext().getNext());

Length--;

} else {

throw new RuntimeException("下标过界");

}

}

}

//移除指定位置的元素

public void Remove(Object data){

int index=getIndex(data);

Remove(index);

}

//获取指定位置的元素

public Object Get(int Index){

if(Index

Node Move=Head;

for(int i=-1;i

Move=Move.getNext();

}

return Move.getData();

}

else{

throw new RuntimeException("下标过界");

}

}

//设定指定位置的元素

public void Set(int Index,Object data){

if(Index

Node Move=Head;

for(int i=-1;i

Move=Move.getNext();

}

Move.setData(data);

}

else{

throw new RuntimeException("下标过界");

}

}

//查找

public boolean Find(Object data){

Node Move=Head;

for(int i=-1;i

if(Move.getData()==data)

return true;

Move=Move.getNext();

}

return false;

}

//获取长度

public int getLength() {

return Length;

}

//获取下标

public int getIndex(Object data){

for(int i=0;i

if(Get(i)==data)

return i;

}

return Length;

}

//判断是否为空

public boolean IsEmpty(){

if(Length==0)

return true;

else

return false;

}

@Override

public String toString() {

String temp="";

Node Move=Head;

for(int i=-1;i

Move=Move.getNext();

if(Move!=null) {

temp += Move.getData() + " ";

}

}

return "LinkList{" +

"Data=" + temp +

", Length=" + Length +

'}';

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值