单链表逆置,C++实现
来源:互联网 发布:linux 重启ssh 编辑:程序博客网 时间:2024/06/05 07:56
问题描述:编写函数将单链表逆置,逆置过程中不允许创建新的单链表。
问题分析:由于不能创建新的单链表,于是只能在该单链表上边遍历边逆置。定义三个指针p,q,r,以p为遍历单链表的指针变量,让p指向一个结点,q指向其后的一个结点,r指向q之后的一个结点(r可以为空),如下图所示。接着让q结点原来指向r结点的指针现在指向p结点,再将p,q指向的结点向后移,如此循环达到逆置。
实现代码:
新手一枚,如有错误,请多指正。
问题分析:由于不能创建新的单链表,于是只能在该单链表上边遍历边逆置。定义三个指针p,q,r,以p为遍历单链表的指针变量,让p指向一个结点,q指向其后的一个结点,r指向q之后的一个结点(r可以为空),如下图所示。接着让q结点原来指向r结点的指针现在指向p结点,再将p,q指向的结点向后移,如此循环达到逆置。
实现代码:
<span style="font-size:14px;">#include <iostream>nodetype *invert(nodetype *h) //实现单链表的逆置{ nodetype *p,*q,*r;if(len(h)<=1){cout<<"逆置的单链表至少有2个结点"<<endl;return NULL; } else { p=h;q=p->next; while(q!=NULL) { r=q->next; q->next=p; p=q; q=r; } h->next=NULL; h=p; return h; }}</span>
新手一枚,如有错误,请多指正。
0 0
- 单链表逆置实现(C++)
- C/C++: 实现加减乘除。
- C实现C(3)
- 单链表逆置(就地逆序) C语言实现
- 排序算法实现(C/C++)
- [C/C++]汉诺塔的实现
- C/C++--strcpy函数实现
- C/C++--memcpy函数实现
- C/C++--memmove函数实现
- C/C++--strcpy函数实现
- C/C++--strlen函数实现
- C/C++--strcmp函数实现
- 【C/C++】String类实现
- c++/c实现线程池
- C udp实现c/s
- C实现C(二)
- 【库】c实现数组
- 【库】c实现字符串
- Oracle12c(12.1)中性能优化&功能增强之通过参数THREADED_EXECTION使用多线程模型
- lua与c交互
- 云栖社区12篇实战经验所组成的“近战”系列分享
- kafka系列教程1(kafka简介)
- UnitTest++ 学习笔记
- 单链表逆置,C++实现
- 【tyvj1463】智商问题
- 如何把MFC工程XP样式切换成WIN7样式
- 初识Spring
- kafka系列教程3(设计构造及原理2)
- 2016年读书笔记
- 10个Android开源个性化View控件
- Gradle 多渠道打包
- 获取wpf datagrid当前被编辑单元格的内容