C程序设计教程之C语言解字符串逆序和单向链表逆序问题的代码示例
小标 2018-06-15 来源 : 阅读 1080 评论 0

摘要:在C程序设计教程中,这篇文章主要介绍了C语言解字符串逆序和单向链表逆序问题的代码示例,求逆序也是考研和面试中的基础算法题类型,需要的朋友可以参考下,希望对大家学习C程序设计教程有所帮助。

在C程序设计教程中,这篇文章主要介绍了C语言解字符串逆序和单向链表逆序问题的代码示例,求逆序也是考研和面试中的基础算法题类型,需要的朋友可以参考下,希望对大家学习C程序设计教程有所帮助。

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

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 反向,直到全部逆序。详细原理请看代码。
图一:

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

图二:

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

图三:

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


typedef struct Node Node;
struct Node{
 int data;
 Node* next;
};
  
Node* reverse<d>Link</d>List(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;
}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程