我遇到的java 笔试题: java 实现单链表并逆转输出
2014-09-04 17:41
423 查看
声明:本代码在eclipse全部调试通过,欢迎留言提问讨论。红色字体为应该注意的地方。
//带头结点的单链表
public class SingleLinkTest
{
int length=5;
public static void main(String[] args)
{
SingleLinkTest linktest=new SingleLinkTest();
Node head=linktest.createLink(linktest.length);
linktest.printLink(head); //打印输出
Node reversehead=linktest.reverseLink(head);
Node tmphead=new Node();
tmphead.setNextnode(reversehead);
linktest.printLink(tmphead); //打印输出
}
Node createLink(Integer size)
{
Node head = new Node(0);
Node tmp1 = null;
Node tmp2 = null;
for(int i=1; i<=size; i++)
{
tmp1=new Node(i);
tmp1.data=Integer.toString(i);
if(i==1) head.setNextnode(tmp1);
else tmp2.setNextnode(tmp1);
tmp2=tmp1;
}
return head;
}
void printLink(Node head)
{
Node tmp=head.getNextnode();
for(int i=0; i<length; i++)
{
System.out.println(tmp.getData());
tmp=tmp.getNextnode();
}
}
Node reverseLink(Node head)
{
if(head==null) return head;
if(head.getNextnode()==null) return head;
Node tmphead=reverseLink(head.getNextnode());
head.getNextnode().setNextnode(head);
head.setNextnode(null);
return tmphead;
}
}
class Node
{
Integer number;
String data;
Node nextnode;
public Node()
{
}
public Node(Integer number)
{
this.number=new Integer(number);
}
void setData(String data)
{
this.data=data;
}
String getData()
{
return this.data;
}
Node getNextnode()
{
return nextnode;
}
void setNextnode(Node nextnode)
{
this.nextnode=nextnode;
}
Integer getnumber()
{
return this.number;
}
void setNumber(Integer number)
{
this.number=number;
}
}
output:
1
2
3
4
5
5
4
3
2
1
//带头结点的单链表
public class SingleLinkTest
{
int length=5;
public static void main(String[] args)
{
SingleLinkTest linktest=new SingleLinkTest();
Node head=linktest.createLink(linktest.length);
linktest.printLink(head); //打印输出
Node reversehead=linktest.reverseLink(head);
Node tmphead=new Node();
tmphead.setNextnode(reversehead);
linktest.printLink(tmphead); //打印输出
}
Node createLink(Integer size)
{
Node head = new Node(0);
Node tmp1 = null;
Node tmp2 = null;
for(int i=1; i<=size; i++)
{
tmp1=new Node(i);
tmp1.data=Integer.toString(i);
if(i==1) head.setNextnode(tmp1);
else tmp2.setNextnode(tmp1);
tmp2=tmp1;
}
return head;
}
void printLink(Node head)
{
Node tmp=head.getNextnode();
for(int i=0; i<length; i++)
{
System.out.println(tmp.getData());
tmp=tmp.getNextnode();
}
}
Node reverseLink(Node head)
{
if(head==null) return head;
if(head.getNextnode()==null) return head;
Node tmphead=reverseLink(head.getNextnode());
head.getNextnode().setNextnode(head);
head.setNextnode(null);
return tmphead;
}
}
class Node
{
Integer number;
String data;
Node nextnode;
public Node()
{
}
public Node(Integer number)
{
this.number=new Integer(number);
}
void setData(String data)
{
this.data=data;
}
String getData()
{
return this.data;
}
Node getNextnode()
{
return nextnode;
}
void setNextnode(Node nextnode)
{
this.nextnode=nextnode;
}
Integer getnumber()
{
return this.number;
}
void setNumber(Integer number)
{
this.number=number;
}
}
output:
1
2
3
4
5
5
4
3
2
1
相关文章推荐
- java实现二叉树的三种遍历方式,并把二叉树转为双向链表,输出二叉树
- Java实现一个类似链表的结构,从尾到头打印输出
- 输入链表输出该链表倒数第k个结点java实现
- Java实现单链表的插入、删除、计算链表的长度和输出链表
- (整理)Java实现链表--找到两个链表的第一个公共结点(网易笔试题2016)
- java实现输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
- java 实现单链表逆转详解及实例代码
- 关于一道J笔试或者机试题的Java实现:从键盘输入一串字符,翻转后输出(要求不使用string相关类即对象)
- java实现单链表逆转
- java实现输入一个链表,输出该链表中倒数第k个结点。
- java实现输入一个链表,反转链表后,输出链表的所有元素。
- Java实现链表的插入,删除,排序,输出
- 数据结构与算法分析笔记与总结(java实现)--链表问题面试笔试注意点
- java 自定义单向链表实现“反序”输出
- 链表的逆转 -- java实现
- 关于一道J笔试或者机试题的Java实现:从键盘输入一串字符,翻转后输出(要求不使用string相关类即对象)
- java实现单向链表CRUD,反转,排序,查找倒数第k个元素,递归输出等操作
- Java语言中链表和双向链表的实现
- Java实现字符串倒序输出的几种方法
- JAVA实现循环链表