字符串逆序上次面试碰到一个单向链表逆序的题目,幸好对字符串逆序比较熟悉,类比做出来了。字符串逆序比较简单,直接上代码:

void stringReverse(char* p1,char* p2)

{

if(p1==p2)return;

//swap the value of p1 ,p2

*p1=(*p1)+(*p2);

*p2=(*p1)-(*p2);

*p1=(*p1)-(*p2);

if(p1==p2-1)return;

else stringReverse(++p1,--p2);

}

调用示例:

stringReverse(str,str+strlen(str)-1);

单向链表逆序先上三幅图:原始状态是图一,全部逆序之后是图三的样子,图二是逆序一步之后的样子。按照图二的步骤依次往后,每次移动一步,把p1->next 反向,直到全部逆序。详细原理请看代码。

图一:

图二:

图三:

typedef struct Node Node;

struct Node{

int data;

Node* next;

};

Node* reverseLinkList(Node* head){

if (head==NULL||head->next==NULL) {

return head;

}

Node* p1 = head;

Node* p2 = p1->next;

Node* p3 = p2->next;

p1->next = NULL;//p1要变成尾指针,所以指向NULL

while (p3!=NULL) {

p2->next = p1;//p2->next 反向

p1=p2;//p1指针向后移动一步

p2=p3;//p2指针向后移动一步

p3=p3->next;//p3指针向后移动一步

}

p2->next=p1;//p3指向了NULL,p2反向

head=p2;//头指针指向之前的尾指针

return head;

}

至此结束了。

时间: 2016-06-05

c语言实现单链表逆序算法,C语言解字符串逆序和单向链表逆序问题的代码示例...相关推荐

  1. C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...

    c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...

  2. 单像素骨架提取算法c语言实现,【图像】骨架提取与分水岭算法

    1.骨架提取 骨架提取,也叫二值图像细化.这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示. morphology子模块提供了两个函数用于骨架提取,分别是Skeletonize ...

  3. 逆序对算法c语言,归并排序求逆序对的代码(C语言)

    #include #include #define MAX 32767 int merge(int *array, int p,int q,int r) { //归并array[p...q] 与 ar ...

  4. 归并求逆序对算法图文详解

    给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量. 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对:否则不是 ...

  5. C语言中 用选择结构编译算法,C语言程序设计立体化教程(高等教育立体化精品系列规划教材)...

    导语 内容提要 李刚.唐炜主编的<C语言程序设计立体化教程(高等教育立体化精品系列规划教材)>主要分为四篇:语法基础篇.程序设计结构篇.初级应用篇和高级应用篇:其中第一篇语法基础部分介绍了 ...

  6. 算法c语言实现第6部分,妙趣横生算法C语言实现 (6)

    #include "stdio.h" typedef struct ArcNode{ /*单链表中的结点的类型*/ int adjvex; /*该边指向的顶点在顺序表中的位置*/ ...

  7. c语言实现FIFO算法和LRU算法,C语言实现FIFO算法与LRU算法

    在操作系统中,当程序在运行过程中,若其所要访问的页面不再内存中而需要把他们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存调出一页程序或数据送磁盘的兑换区中.但哪一个页面调出, ...

  8. 滑动平均滤波c语言_10种简单的数字滤波算法(C语言源程序)

    假定从 8 位 AD 中读取数据(如果是更高位的 AD 可定义数据类型为 int ) , 子程序为 get_ad(); 1 .限副滤波 /* A 值可根据实际情况调整 value 为有效值, new_ ...

  9. c语言中边框所占两列一行,css中的border-collapse属性如何设置表格边框线?(代码示例)...

    css中的border-collapse属性如何设置表格边框线?本篇文章就给大家介绍css中的border-collapse属性是什么? border-collapse属性设置表格边框线的方法.有一定 ...

最新文章

  1. c# Pdf 转换图片
  2. 《Redis官方文档》用Redis构建分布式锁(悲观锁)
  3. docker php gd png.h,docker php 容器安装GD库
  4. 《学习之道》第六章习惯的部分-反应程序
  5. 如何使用JS来开发室内地图商场停车场车位管理系统
  6. 双路服务器单路运行,架构设计-具体案例求解惑:两个单路服务器比一个双路服务器性能高100%?...
  7. 电脑管理器地址栏 按右键会有的功能
  8. win11右键新建没有txt文本文档记事本怎么办
  9. Kubelet cAdvisor 资源监控
  10. 普通卷积、分组卷积和深度分离卷积概念以及参数量计算
  11. 谷歌正式放弃与雅虎的广告合作计划
  12. 年中大促,华硕破晓PX574特惠专场,直降400!
  13. 2020.10.13--PS--像素化滤镜、扭曲类滤镜、波浪和水波
  14. MATLAB 字符串数组
  15. java弱化胖瘦客户端_Java架构师成长直通车百度云
  16. 自动驾驶Apollo安装步骤
  17. 6万字新型智慧城市一网统管顶层设计方案
  18. 计算机的英语作文模板,计算机英文模板 简历
  19. VMware虚拟机桥接方式实现上网互通
  20. 深度学习之 人脸识别(3) 摄像头识别人脸 实例

热门文章

  1. GND RXD TXD的说明
  2. 嵌入式 -固件防复制系列【1】GD32代码读保护
  3. 理财笔记 - 老猫有感
  4. wifidog认证接口
  5. “悟空”来也!未上市就签几亿订单,看优必选机器人梦想的超级路径
  6. python百度地图poi_百度地图数据采集手把手教,从此POI数据不再是愁
  7. 第四十一章 贪心算法——排序不等式
  8. 最详细的golang + 私库(gitlab gitee) 模块开发 这一篇文章解决所有问题
  9. havc是什么意思_什么是AVC编码? 简述H.264概念和发展
  10. js基础-小案例歌词匹配