Revision: 57196
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at May 21, 2012 08:41 by edwarddr
Initial Code
class linkList
{
Node head;
public linkList()
{
head = null;
}
public void reverse_all()
{
if (head == null || head._next == null)
return;
reverse_nc(head);
}
// 1, 2, 3
private Node reverse(Node n)
{
head = n;
if (n._next == null) return head;
Node nextNode = n._next;
n._next = null;
nextNode = reverse(nextNode);
nextNode._next = n;
return n;
}
// using non-recursion
private void reverse_nc(Node n)
{
Node p = null;
Node q = null;
while (n != null){
p = n._next;
n._next = q;
q = n;
n = p;
}
head = q;
}
void printV()
{
Node cur = head;
while(cur!=null)
{
System.out.print(cur._value + " ");
cur = cur._next;
}
System.out.println(", End!");
}
public static void main(String args[])
{
linkList list = new linkList();
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
n1._next = n2;
n2._next = n3;
list.head = n1;
list.printV();
list.reverse_all();
list.printV();
}
}
class Node
{
int _value;
Node _next;
Node( int value)
{
_value = value;
_next = null;
}
}
Initial URL
Initial Description
It's sample code of reversing a linked list with either recursive or non-recursive.
Initial Title
reverse a single linked list
Initial Tags
Initial Language
Java