单链表的逆置
来源:互联网 发布:淘宝视频剪辑收费 编辑:程序博客网 时间:2024/05/18 02:42
首先先来看一下链表的结构,如下图结构体所示,链表的节点包括两部分,数据域和指针域。
typedef struct Node
{
int data;//数据域
struct Node *next;//指向下一个节点
}Node,*List;
对于单链表的逆置有两种方法,第一种是改变指针方向,第二种是利用头插的思想,将数据节点依次头插进链表,就可以得到逆置后的链表。
有以下单链表
1、改变指针方向
void Reverse(List plist){ if(plist==NULL||plist->next==NULl||plist->next->next==NULL) { return; } Node *p=plist->next;//从第一个头结点开始 Node *q=p->next; Node *s; p->next=NULL; while(q!=NULL) { s=q->next; q->next=p;//改变指针方向 p=q;//指针后移 q=s;//指针后移 } plist->next=p;}
根据上图代码所示,在执行q->next=p这句代码时 就相当于指针转变了方向,由原来的p指向q,变成了q指向p,然后指针后移。如下图所示
2、头插思想
void Rsverse(List plist){ if(plist==NULL||plist->next==NULL||plist->next->next==NULL) { return; } Node *p=plist->next; Node *q; plist->next=NULL; while(p!=NULL) { q=p->next; p->next=plist->next;//将p头插进链表 plist->next=p; p=q; }}通过将每一个结点重新头插入链表,也能得到逆置的链表
阅读全文
1 0
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 单链表的逆置
- 1010. 一元多项式求导 (25)
- 简述Spring框架的Ioc
- cocoscreator实现微信内置浏览器点击图片识别图中二维码
- 《Effective Java》(9~11)阅读笔记
- 记录华为、魅族手机无法打印 Log 日志的问题
- 单链表的逆置
- hdu 1274 展开字符串
- Vue之style的用法
- 杭电oj1010题:Tempter of the Bone
- C中enum用法
- 2017.9.23 新Nim游戏 失败总结
- 索引在文件和内存中的数据结构(搜索阶段)
- wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)
- Java反射与动态代理