数据结构之单链表反转
2010-07-23 17:24
295 查看
前些天在CSDN上看到一篇老外公司招程序员的报道,说想招到会写程序的人真是很难,许多来应聘的人连单链表反转也写不出来,我就想自己试一下。就像很多算法一样,单链表反转思路挺简单,但是要写出没有明显漏洞的代码还是需要一段时间的。
单链表反转的基本思路有两种:
1)反转节点的指针next;
2)直接反转节点,每次拿到一个节点,都插入到连表最前端。
第一种方法的代码如下:
第二种方法的代码如下:
两种算法的代码看上去很像,不过还是有本质的区别:方法一中pCur一直在向尾节点遍历,而方法二中的pCur则一直保持不变,这也体现了两种算法的不同之处。当然,算法的实现也可以有别的写法,并不局限于这里。
单链表反转的基本思路有两种:
1)反转节点的指针next;
2)直接反转节点,每次拿到一个节点,都插入到连表最前端。
第一种方法的代码如下:
Node* revert_list(Node* pNode) { assert(pNode != NULL); Node* pPre = NULL; Node* pCur = pNode; Node* pNext = pCur->next; while (pNext) { pCur->next = pPre; pPre = pCur; pCur = pNext; pNext = pCur->next; } pCur->next = pPre; return pCur; }
第二种方法的代码如下:
Node* revert_list(Node* pNode) { assert(pNode != NULL); Node* pHead = pNode; Node* pCur = pNode; Node* pNext = pCur->next; while (pNext) { pCur->next = pNext->next; pNext->next = pHead; pHead = pNext; pNext = pCur->next; } return pHead; }
两种算法的代码看上去很像,不过还是有本质的区别:方法一中pCur一直在向尾节点遍历,而方法二中的pCur则一直保持不变,这也体现了两种算法的不同之处。当然,算法的实现也可以有别的写法,并不局限于这里。
相关文章推荐
- 数据结构_单链表的建立与反转
- 数据结构之单链表反转
- 算法学习之数据结构之单链表反转,两两反转
- 数据结构——反转单链表
- 数据结构之单链表C++(模板)
- 数据结构List示例(一):链表反转
- 数据结构之单链表常见面试题(二)
- 数据结构之线性表-链式存储之单链表(一)
- (C语言)单链表的链式实现(数据结构二)
- 数据结构之单链表
- 数据结构——单链表模板类
- 数据结构:程序加图示分析单链表的插入和删除操作
- 成人版java数据结构之单链表II删除
- 数据结构-单链表
- 数据结构基础(9) --单链表的设计与实现(2)之高级操作
- 数据结构——反转单链表
- 【学习点滴-数据结构-单链表】单链表的建立,遍历及有序单链表合并
- 数据结构 单链表简单实现
- SDUT 2120 数据结构实验之链表五:单链表的拆分
- 第十三章 数据结构基础--单链表