链表就地逆置
来源:互联网 发布:淘宝卖家不卖给我 编辑:程序博客网 时间:2024/05/01 08:48
就地逆置,就是在不借助任何中间变量的情况下,逆置一单链表。
算法思路:
逆置后的点链表初始为空,表中的节点不是新生成的,而是从原链表当中一次“删除”,再逐个头插到逆置表中。设逆置链表的初始态为空表,“删除”已知链表中 的第一个节点,然后将它“插入”到逆置链表的“表头”,即使得他成为逆置链表中“新”的第一个节点,如此循环,直至原链表为空。
假设有如下数据结构:
#define ElemType char typedef struct Node{ ElemType data; struct Node *next; }Node,*LinkList;
如下图所示:
代码如下:
void ReverseList(LinkList L) { Node *p,*q; p = L->next; /*p为原链表的当前处理节点*/ L->next = NULL; /*逆置单链表初始为空*/ while(p != NULL){ /*当原链表未处理完*/ q = p->next; /*q指针保留原链表当前处理节点的下一个节点*/ p->next = L->next; /*将当前处理节点p插入到逆置L的表头*/ L->next = p; p = q; /*p指向下一个待插入的节点*/ } }
其实也比较简单;就是有点绕。
同时给出头插法建立链表的代码:
void CreatList(LinkList L) { Node *s; char c; int flag = 1; while(flag){ c = getchar(); if(c != '$'){ s = (Node*)malloc(sizeof(Node)); s->data = c; s->next = L->next; L->next = s; }else flag = 0; } }
0 0
- 链表就地逆置
- 链表就地逆置
- 链表就地逆置
- 链表就地逆置
- 链表的就地逆置
- 单向循环链表就地逆置
- 24. 链表就地逆置
- 链表就地逆置和合并
- 线性表---就地逆置
- 实验二、3链表的就地逆置
- 24.链表操作,单链表就地逆置
- Q24、(链表):链表操作,单链表就地逆置
- 双向循环链表(插入,删除,就地逆置)
- 链表的就地逆置(递归+非递归)
- 24 单链表就地逆置,合并链表
- DS之链表实现就地逆置
- 链表之带头结点的单链表就地逆置
- 线性表的就地逆置
- Asp.net利用Jquery动态添加表格的行数
- Java基本开发环境搭建(转)
- Eclipse编译快捷键
- ssh完整例子--第一个ssh(转)
- 一篇SSH框架的应用介绍[转]
- 链表就地逆置
- Java三大框架——SSH框架应用
- 在Windows下搭建Android开发环境【…
- 触屏设备浏览器javascript响应滑动事件
- android开发中常用的Eclipse快捷键
- Android天天向上(2)— 搭建…
- Android manager在“Done loading packages”之后就不动了
- UriMatcher类使用介绍[转]
- 工作记事本