反转链表

「爱情、让人受尽委屈。」 2022-11-29 12:40 288阅读 0赞

在这里插入图片描述

  1. //反转链表
  2. node * Reverse(node *head){
  3. node *newHead = NULL;//新链表的表头 ,即已经逆转好的部分
  4. node *oldHead, *temp;//旧链表的表头,即待逆转的部分
  5. //temp存储当前表头的下一个结点,它将要作为旧链表新的头结点
  6. oldHead = head;
  7. while(oldHead){
  8. //等价于oldHead != NULL
  9. temp = oldHead->next;
  10. //防止链表断裂,一定要保存当前待处理的结点的下一个结点
  11. oldHead->next = newHead;
  12. //把当前旧链表的头结点加到新链表的头上
  13. newHead = oldHead;//更新新链表的头结点
  14. oldHead = temp;//更新旧链表的头结点
  15. }
  16. return newHead;//不管待反转的链表是空链表或
  17. //只有一个结点的链表或有多个结点的链表,都能正确地逆转链表
  18. }

测试点:

  • 输入的链表头指针是NULL
  • 输入的链表只有一个结点
  • 输入的链表有多个结

链表相关操作测试用函数

发表评论

表情:
评论列表 (有 0 条评论,288人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    题目 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出

    相关

    时间限制:1秒 空间限制:32768K 热度指数:408664 本题知识点: 链表 算法知识视频讲解 题目描述 输入一个链表,反转链表后,输出新链表的表头。