开始做笔试面试题了,现将一些做过的题放到博客里,以供大家学习指导。
第一道单链表反转问题:单链表(带有头结点)结点定义如下
class LNode {
int data;
LNode next;
}
我的做法是新建立一个表头,然后将原链表(除头结点)按顺序采用尾插法插到新的头结点后面。代码如下
public LNode ReverseLinkedList(LNode list)
{
LNode newList = new LNode();
LNode tmp;
if(list == null){
System.out.println("The list is empty.");
return list;
}
else{
newList.data = list.data;//原头结点的数据域存放的是链表的长度
newList.next = null;
while(list.next != null){//采用尾插法将原链表插到新的头结点后面
tmp = newList.next;//指向原链表中未插入的结点的首位置
newList.next = list.next;
list.next = list.next.next;
newList.next.next = tmp;
}
return newList;
}