数据结构之链表分块
来源:互联网 发布:物流运输软件 编辑:程序博客网 时间:2024/05/21 10:37
关于怎么将一个链表分成两个部分,就是用注明的快慢指针的办法,当然快慢指针还有很多的用法。
利用一个快指针pfast和一个慢指针pslow,pslow每次做一次pslow->next,pfast步长为2,做pfast->next->next。利用两个指针的步长不通,当pfast或者pfast->next指向NULL,pslow指向的就是中间的位置。大家可以画几个链表分析一下,slow此时指向的节点,要前一个位置分开才刚刚好,比如4个节点时从pslow断开就不行。所以添加另外一个指针pre指向pslow前一次的位置即可。
struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};void divideList(ListNode *head){ if(head==NULL||head->next==NULL)return; ListNode* pslow=head;//慢指针 ListNode* pfast=head; //快指针 ListNode* pre;//记录慢指针位置,为后半部分链表的表头 while(pfast!=NULL&&pfast->next!=NULL){ pre=pslow; pslow=pslow->next;//慢指针步长为1 pfast=pfast->next->next;//快指针步长为2 } pre->next=NULL;}
0 0
- 数据结构之链表分块
- 大话数据结构之:分块索引
- 数据结构 之 检索 (分块检索、hash)
- 【数据结构】静态查找之分块查找
- 匹配 分块数据结构
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- CDateTimeCtrl CTime COleDateTime CString 日期时间
- Android开源项目汇总
- 一款小工具DeskPinsEx开发笔记
- 从企业经营角度反向思考IT价值
- Vitamio打造android个性化得播放器
- 数据结构之链表分块
- 一致和非一致段
- View.getDrawingCache()为Null的解决办法
- .NET中的CTS、CLS和CLR
- stringstream的用法
- Leetcode之数组问题
- 获取系统当前时间:
- android启动新线程的方法
- Linux compat drivers compatibility package