笔试题经常会见到关于链表的操作,题目会给出ListNode类的描述如下:
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
这种题我一开始不知道怎么测试,不知道怎么输入一个链表,后来突然明白了,就是从一个头节点head开始,把每一个节点的next域定义一下就行了,这样就成了一个链表啦。
比如反转链表方法:
public ListNode ReverseList(ListNode head) {
ListNode newHead = head;
Stack<ListNode> s = new Stack<ListNode>();
while(head!=null){
s.push(head);
head = head.next;
}
if(!s.isEmpty()){
newHead = s.pop();
}
ListNode t=newHead;
while(!s.isEmpty()){
newHead.next = s.pop();
newHead = newHead.next;
}
newHead.next = null;//注意!一定要把最后一个节点的next置为null
return