翻转链表

来源:互联网 发布:北京小学教师工资 知乎 编辑:程序博客网 时间:2024/06/06 05:30

输入一个链表,从头到尾翻转,然后输出翻转后的头结点


需要考虑的问题

如果将链表首先遍历保存在栈中,保存后pop栈同时分配list空间进行保存,这种翻转的方法,要占用O(n)内存,O(n)时间

所以有没有一种可能,遍历一遍并且也能输出,这种方法不会太费空间,时间O(n)

所以就想,如果有j,i,k,三个连续节点,其k节点以前都已经翻转过,现在翻转i节点,如何翻转呢

首先要做的是将i节点的m_pNext 指向j节点,这样一来,原本i的下一个节点k就没有指针指向它,也就不能再继续操作,怎么办呢

最好的方法就是保存三个节点,一个是要处理的节点,一个是要处理节点的前一个节点和要处理节点的后一个节点

保存前一个节点的目的是改变当前节点的下一个节点时要指向它,保存后一个节点是不至于丢指针k


0 0