leetcode206题实现反转链表(c语言)

 

迭代方法实现:

struct ListNode* reverseList(struct ListNode* head){
    struct ListNode *temp , *new_head=NULL;
    while(head)
    {
       temp=head;
       head = head->next;
       temp->next = new_head;
       new_head = temp;
    }
    return new_head;
}

递归方法实现:

struct ListNode* reverseList(struct ListNode* head){
    if (head == NULL || head->next == NULL)
        return head;
    else
    {
        struct ListNode *newhead = reverseList(head->next);
        head->next->next = head;
        head->next = NULL;
        return newhead;
        
    }
}

已经忘记了迭代和递归的关系,特意去复习了一下:

递归是由自己延伸出去的,而迭代是得到新的结果并替代了自己 。

1.递归是指函数过程,子程序在运行过程中直接或间接调用自身而产生的重入现象。即函数不断引用自身,直到引用的对象已知

2.迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果,每一次对过程重复一次称为一次"迭代“,而每一次迭代得到的结果会作为下一次迭代的初始值。