编写单链表的成员方法,实现单链表的就地逆置。
函数接口定义:
方法接口:
void reverse()
裁判测试程序样例:
class Node {
Object data;
Node next;
public Node( ) {
data=null ;
next=null;
}
public Node( Object obj , Node nt) {
data=obj ;
next=nt;
}
}
class LinkList {
public Node head ;
public LinkList () //创建n 个元素的线性表 ,代码省略
{...}
public void display() //显示线性表的所有元素 ,代码省略
{...}
/* 请在这里填写答案 */
}
public class Main{
public static void main(String args[]){
LinkList L = new LinkList();
L.reverse();
L.display();
}
}
输入样例:
输入一行,n+1个整数,第1个表示单链表元素个数,接下来的n个数表示单链表的元素值。
5 1 2 3 4 5
结尾无空行
输出样例:
逆置后的单链表的所有元素值。
5 4 3 2 1
结尾无空行
答案:
void reverse(){
int sum = 0;
Node p = head;
while(p.next!=null)
{
sum++;
p = p.next;
}
p = head;
Object [] k = new Object[sum];
for(int i = 0;i<sum;i++)
{
p = p.next;
k [i] = p.data;
}
p = head;
for(int i = sum-1;i>=0;i--)
{
Node ch = new Node(k[i],null);
p.next = ch;
p = ch;
}
}