题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点,链表节点定义为:
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
};
算法思路:
链表 1-->2-->3-->4-->5
建立一个 pPrev节点,而且为空节点; pPrev = NULL;再建立一个节点pNode = ...
分类:
编程语言 时间:
2014-12-12 15:00:59
阅读次数:
163
定义链表结构struct ListNode{ int val; ListNode *next; ListNode(int v) : val(v), next(NULL) {}};非递归反转单链表ListNode* reverse(ListNode *root){ if (ro...
分类:
其他好文 时间:
2014-09-12 23:21:44
阅读次数:
235
最近复习考研,加上一直都将"算法"放在很高的位置,所以,蛮重视算法的.不多说了,其实这个问题,不难理解的.主要代码: 1 //反转单链表. 2 void 3 reverse(linklist lList) { 4 Linknode *pre = NULL; //注意该结点不能再指向别的...
分类:
其他好文 时间:
2014-09-12 01:11:24
阅读次数:
221
题目:存在一个单链表,头指针为head,实现单链表的反转Node *Reverse(Node *head)。
该算法的求解办法有很多,如:
方法1:先顺序变量单链表,将结点保存到栈中,在从栈中弹出结点,重新建立一个新的单链表;
方法2:用《剑指offer》里面给出的算法,用三个指针来实现;
方法3:采用递归实现,是方法2的递归实现形式。
本文主要给出方法2和方法3,在给出具体的代码之前,先要注意几个问题:
...
分类:
其他好文 时间:
2014-08-04 18:01:57
阅读次数:
200
单链表的反转可以使用循环,也可以使用递归的方式
1.循环反转单链表
循环的方法中,使用pre指向前一个结点,cur指向当前结点,每次把cur->next指向pre即可。
代码:
# include
# include
using namespace std;
struct linkNode
{
int val;
linkNode *next;
linkNode(int...
分类:
编程语言 时间:
2014-07-06 11:08:28
阅读次数:
231
单链表的反转可以使用循环,也可以使用递归的方式
1.循环反转单链表
循环的方法中,使用pre指向前一个结点,cur指向当前结点,每次把cur->next指向pre即可。
代码:
class ListNode:
def __init__(self,x):
self.val=x;
self.next=None;
def nonrecurse(he...
分类:
编程语言 时间:
2014-07-06 00:24:52
阅读次数:
331