单链表的翻转
来源:互联网 发布:九年级下册历史书淘宝 编辑:程序博客网 时间:2024/04/24 20:38
//单链表翻转非递归法,返回翻转之后的头结点//方法一、带有头指针的单链表,原理:将第二个节点到最后一个节点依次插入到头结点之后ListNode* ListReverse(ListNode *head){ if(head==NULL) return NULL; ListNode *h=head; ListNode *p=h->next; h->next=NULL;//暂时将头结点与后面的结点断开 while(p!=NULL) { ListNode *q=p->next;//保存p结点之后的结点p->next=h->next; //将第二个节点到最后一个节点依次插入到头结点之后h->next=p;p=q; } return h;}//方法二、无头结点的单链表,原理:改变指针指向。//前一结点,当前结点,后一节点————>>当前结点的指针域指向前一结点ListNode* ListReverse(ListNode* head){ ListNode *newhead=NULL; ListNode *pNode=head; ListNode *preNode=NULL; while(pNode!=NULL) { ListNode *nextNode=pNode->next;if(nextNode==NULL) newhead=pNode;//指定新的头结点为最后一个节点pNode->next=preNode;//当前结点指针指向前一结点preNode=pNode;pNode=nextNode; } return newhead;}//方法三、带有头结点的单链表//原理:STEP1::判断为空或者一个结点;STEP2:先遍历head->next为首的链表,得到一个新的头结点//STEP3:把原来的头结点加到新链表的尾部。即把head赋值给head->next->next,head->next为空。//STEP4:返回新的头结点newhead.ListNode* ListReverse(ListNode *head){ if(head==NULL||head->next==NULL) return head; ListNode *newhead=ListReverse(head->next); head->next->next=head; head->next=NULL; return newhead; }
0 0
- 单链表的翻转
- 单链表的翻转
- 单链表的翻转
- 单链表的翻转
- 单链表的翻转
- 单链表的翻转
- 单链表的翻转
- java单链表的翻转
- Java 实现的单链表翻转
- python实现单链表的翻转
- 单链表的全翻转及固定半径翻转
- 单链表翻转
- 单链表翻转
- 单链表翻转
- 单链表翻转
- 单链表翻转
- 翻转单链表
- 翻转单链表
- NopCommerce使用Autofac实现依赖注入
- 虚拟机中 yum 安装时报错
- css中em单位的用法
- 今日开始学习C++
- lucene源码分析---9
- 单链表的翻转
- TCP协议中的三次握手和四次握手
- 关于在浏览器上直接访问工程问题
- 树莓派用单个LED数码管显示当前环境温度
- 内存管理
- 原生Js无缝滚动效果的简单实现
- HDU 1079 Calendar Game(博弈,找规律可解)
- AndroidStudio导入兼容包
- UVA 11626