输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解题思路:
/**
* 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
* 本案例用栈的特性完成反转
*/
public class PrintListFromTailToHead
{
public static void main(String[] args)
{
Link objLink;
objLink=new Link(100);
objLink.print();
System.out.println();
objLink.reversePrint();
}
static class Link{
private LinkNode head;
private int len;
private LinkNode[] linkNodes;
public Link(int len)
{
this.len = len;
initialize();
}
private void initialize()
{
int LinkSize=this.len;
head=new LinkNode(0+"",null);
LinkNode[] link=new LinkNode[LinkSize];
LinkNode po=null;
for (int i = 0; i < LinkSize-1; i++)
{
LinkNode node=new LinkNode(i+1+"",null);
if (i==0)
{
head.next = node;
link[i]=head;
}
else
{
po.next=node;
link[i]=po;
}
po=node;
}
this.linkNodes=link;
}
public void print()
{
if (this.linkNodes==null)
{
return;
}
LinkNode objNode;
objNode=head;
while (objNode!=null)
{
System.out.print(objNode.value+",");
objNode=objNode.next;
}
}
public void reversePrint()
{
if (this.linkNodes==null)
{
return;
}
LinkNode objNode;
Stack<String> objStack=new Stack<>();
objNode=head;
while (objNode!=null)
{
objStack.push(objNode.value);
objNode=objNode.next;
}
while (!objStack.isEmpty())
{
System.out.print(objStack.pop()+",");
}
}
}
static class LinkNode
{
private String value;
private LinkNode next;
public LinkNode(String value, LinkNode next)
{
this.value = value;
this.next = next;
}
}
}