package Solution;
/*
* 问题描述:
* 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
*/
//定义链表的结点结构
class ListNode1 {
ListNode1 next;
int data;
public ListNode1(int data) {
this.data = data;
}
}
public class problem15 {
public static int getReverseListHead(ListNode1 head) {
// 定义一个结点,用来保存找到的反转链表的表头结点
// 当前正在遍历的结点p
ListNode1 pNode = head;
// 结点p的前一个结点
ListNode1 preNode = null;
// 结点p的后一个结点
ListNode1 reversHeadNode = null;
if (head == null) {
return 0;
}
if (head.next == null) {
return head.data;
} else {
while (pNode != null) {
ListNode1 nextNode = null;
nextNode = pNode.next;
if (nextNode == null) {
reversHeadNode = pNode;
}
pNode.next = preNode;
preNode = pNode;
pNode = nextNode;
}
}
return reversHeadNode.data;
}
/**
* @param args
*/
// 测试
// public static void main(String[] args) {
// problem15 test = new problem15();
// ListNode1 node1 = new ListNode1(1);
// ListNode1 node2 = new ListNode1(2);
// ListNode1 node3 = new ListNode1(3);
// ListNode1 node4 = new ListNode1(4);
// node1.next = node2;
// node2.next = node3;
// node3.next = node4;
// node4.next = null;
// // 功能测试:链表中有多个结点、有一个结点
// // 特殊输入测试:链表头结点为null指针
// System.out.println(test.getReverseListHead(node1));
// }
}
剑指offer-15
最新推荐文章于 2024-03-23 14:48:15 发布