摘要:
题目:写一个函数,输入一个链表的头结点,反转该链表并返回反转后链表的头结点。链表结点定义如下:1 struct ListNode2 {3 int nKey;4 ListNode *pNext;5 };思路: 需要三个指针pPre, pCur, pNext,分别前一结点,当前结点以及下一结点,为了防止在反转链表过程中发生链表断裂,需要记录当前结点的下一结点。每一步操作为: 1.记录pNext = pCur->pNext; 2. pCur的pNext指向pPre; 3. pPre指向pCur,pCur指向pNext。此题最容易错误的是发生链表断裂!code: 1 //反转链表 2... 阅读全文
摘要:
题目:输入一个链表的头节点,从尾到头打印出每一个节点的值。(要求不改变链表的结构)链表节点定义如下:1 struct ListNode2 {3 int nKey;4 ListNode *pNext;5 }思路一:由从尾到头容易想到栈的后进先出的性质,于是可以用栈实现。(如果可以改变链表的结构,则可以先把链表反转,再从头依次输出结果)反转链表可参考:http://www.cnblogs.com/ivorfeng/archive/2013/05/02/3055471.htmlcode: 1 //利用栈实现 2 void PrintListInStack(ListNode *pHea... 阅读全文