Java单链表中的元素互换位置_java实现单链表及倒置单链表中的元素

单链表的结构比较简单,图示如下: 单链表有很多个节点构成。每个节点由指针域和数值域构成,指针指向下一个节点的数值域。最后一个节点的指针指向的是NULL。 java实现单链表的一些基本的操作: package test;import javax.xml.soap.Node;/** * 单链表的创

要实现单链表,首先要建立链表的节点类:单链表在插入和删除操作时,有无头结点的实现是有区别的,总的来说,带有头结点的单链表实现起来比较方便,而不带头结点的单链表在链首插入和删除时要特殊处理,以下代码是带有头结点的单链表的实现。 //类定义、模板类的定义 #ifndef IncludeHeadNodeChain_H Java代码

/**

* 单链表的节点类,单链表的实现。

*/

package com.ty.third;

/**

* @author liming

*

*/

public class SLLNode {

//你要储存的信息单位

public T info;

//指向下一个元素

public SLLNode next;

public SLLNode(T i)

{

this(i,null);

}

//第二个参数传入node是为了快速建立链表

public SLLNode(T i, SLLNode node)

{

this.info = i;

this.next = node;

}

}

/**

* 单链表的节点类,单链表的实现。

*/

package com.ty.third;

/**

* @author liming

*

*/

public class SLLNode {

//你要储存的信息单位

public T info;

//指向下一个元素

public SLLNode next;

public SLLNode(T i)

{

this(i,null);

}

//第二个参数传入node是为了快速建立链表

public SLLNode(T i, SLLNode node)

{

this.info = i;

this.next = node;

}

}

然后,单链表类: Java代码

package com.ty.third;

public class SLLList

{

protected SLLNode head, tail;

//当前的节点,用于遍历所有元素

private SLLNode cur = null;

//创建一个空的单链表

public SLLList()

{

head = tail = null;

}

//添加头节点

public void addToHead(T info)

{

SLLNode sllNode = new SLLNode(info);

//如果链表为空

if(head == null)

{

head = sllNode;

tail = head;

}

//链表不为空

else

{

sllNode.next = head;

head = sllNode;

}

}

//打印所有链表节点

public void printAllNode()

{

SLLNode temp = null;

for(prepare();hasNext();next())

{

temp = getNextNode();

System.out.println(temp.info);

}

}

//添加尾节点

public void addToTail(T info)

{

SLLNode sllNode = new SLLNode(info);

//链表为空,则直接创建头节点

if(head == null)

{

addToHead(info);

}

//链表不为空,加到链表尾部

else

{

tail.next = sllNode;

tail = sllNode;

}

}

//列表是否为空

public boolean isEmpty()

{

return (head == null);

}

//判断列表是否有下一个元素

public boolean hasNext()

{

if(isEmpty())

return false;

if(cur.next == null)

return false;

return true;

}

//获得当前元素

public SLLNode getNextNode()

{

return cur.next;

}

//当前元素下移

public void next()

{

cur = cur.next;

}

//为遍历准备

public void prepare()

{

cur = new SLLNode(null);

cur.next = head;

}

public static void main(String []args)

{

SLLList sllList = new SLLList();

sllList.addToHead("Joking");

sllList.addToHead("Testing");

sllList.addToTail("Lily");

sllList.printAllNode();

SLLList sllList2 = new SLLList();

for(sllList.prepare(); sllList.hasNext(); sllList.next())

{

sllList2.addToHead(sllList.getNextNode().info);

}

sllList2.printAllNode();

}

}

你可能感兴趣的:(Java单链表中的元素互换位置)