经典笔试面试题:将两个有序的链表合并成一个有序的链表

转载别人的博客,考虑的很全面。

(1)链表的基本知识:

https://blog.csdn.net/morixinguan/article/details/68951912

(2)将两个有序的链表合并。

https://blog.csdn.net/u012155923/article/details/52629526

(3)链表翻转

  1>非递归实现的程序    

node* reverseList(node* H)
{
    if (H == NULL || H->next == NULL) //链表为空或者仅1个数直接返回
        return H;
    node* p = H, *newH = NULL;
    while (p != NULL)                 //一直迭代到链尾
    {
        node* tmp = p->next;          //暂存p下一个地址,防止变化指针指向后找不到后续的数
        p->next = newH;               //p->next指向前一个空间
        newH = p;                     //新链表的头移动到p,扩长一步链表
        p    = tmp;                   //p指向原始链表p指向的下一个空间
    }
    return newH;
}

  

猜你喜欢

转载自www.cnblogs.com/xiaoxiaoxiao136/p/9712221.html