• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言解字符串逆序和单向链表逆序问题的代码示例

C语言解字符串逆序和单向链表逆序问题的代码示例

作者:刘伟 字体:[增加 减小] 来源:互联网 时间:2017-05-28

刘伟 通过本文主要向大家介绍了c语言单链表逆序,c语言链表逆序,c语言字符串逆序,c语言字符串逆序输出,c语言实现字符串逆序等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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); 
} 
</div>

调用示例:

stringReverse(str,str+strlen(str)-1); 
</div>

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

201666144741552.png (619×144)

图二:

201666144815285.png (619×144)

图三:

201666144831984.png (619×144)

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; 
} 
</div>

至此结束了。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言数据结构实现链表逆序并输出
  • C语言解字符串逆序和单向链表逆序问题的代码示例
  • C语言实现单链表逆序与逆序输出实例
  • C语言单链表常见操作汇总

相关文章

  • 2017-05-28C/C++回调函数介绍
  • 2017-05-28tcp socket客户端和服务端示例分享
  • 2017-05-28使用boost读取XML文件详细介绍
  • 2017-05-28对比C语言中memccpy()函数和memcpy()函数的用法
  • 2017-05-28C++的字符串分割函数的使用详解
  • 2017-05-28C语言putenv()函数和getenv()函数的使用详解
  • 2017-05-28C++ 将数据转为字符串的几种方法
  • 2017-05-28动态数组C++实现方法(分享)
  • 2017-05-28C语言 数据结构中求解迷宫问题实现方法
  • 2017-05-28解析C++的线性表链式存储设计与相关的API实现

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c++实现十进制转换成16进制示例
    • c字符串,string对象,字符串字面值的区别详解
    • C语言 栈的表示和实现详细介绍
    • Oil Deposits
    • 解析C++编程中的bad_cast异常
    • 用C++实现strcpy(),返回一个char*类型的深入分析
    • 浅析C++编程当中的线程
    • C++空类及没有成员变量的类的大小实例分析
    • C/C++动态分配与释放内存的区别详细解析
    • C++封装远程注入类CreateRemoteThreadEx实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有