当前位置: 首页 > news >正文

单链表的逆置

单链表的逆置是面试官非常青睐的题,这个题可以看出面试者对链表和指针的操作。
而且问题也很好描述,一句话就表达出了自己的题。
----------------------------------------------------------------------------------------------
一、算法思想:(头插法)
<1>,将源链表分为链表头和链表实体。
<2>,将链表实体节点用头插法依次插入到链表头中。
<3>,如果链表实体插完则算法结束,否则转到<2>.

--------------------------------------------------------------------------------------------
二、算法的实现:

头插法:

void reverse(struct node *head)
{
        if (head == NULL)
            return ;
        struct node *p = head->next,*pnext = NULL;
        head->next = NULL;
        while (p != NULL) {
                pnext = p->next;
                p->next = head->next;
                head->next = p;
                p = pnext;
        }
        return ;
}

 利用辅助指针

void ListReverse2(LinkList L)
{
    LNode *real = L->next;          //带头结点的链表,real指向第一个实结点
    //real为NULL,则链表为只含头结点的空表
    //real->nexxt为NULL,则链表只含有一个结点
    if(real == NULL || real->next == NULL)          
        return;

    LNode *pre = real;              //先前指针
    LNode *cur = real->next;        //当前指针
    LNode *suc = NULL;              //后继指针

    while(cur != NULL)
    {
        suc = cur->next;
        cur->next = pre;

        pre = cur;
        cur = suc;
    }
    real->next = NULL;              //while执行后第一个结点和第二个结点互指

    L->next = pre;                  //记录新的头结点
}

 

转载于:https://www.cnblogs.com/wft1990/p/6875485.html

相关文章:

  • CentOS6.3上安装与配置nginx+php+mysql环境
  • phoenixframe自己主动化測试平台对div弹出框(如弹出的div登陆框)的处理
  • atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7
  • android studio 1
  • Mysql 实现 序列的使用
  • 转载 FreeNAS的安装和简单配置 http://freenas.cn/?p=342
  • (转载)Linux 多线程条件变量同步
  • 编程语言类型划分
  • 关于sublime text 3 pylinter的错误提示
  • nil的使用
  • #Java第九次作业--输入输出流和文件操作
  • 路径层、裁剪区域
  • to_char函数 官方文档详解(数字格式转换和日期转换)
  • 【代码笔记】iOS-NSJSONSerializationDemo
  • java做http接口
  • [译]CSS 居中(Center)方法大合集
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 10个确保微服务与容器安全的最佳实践
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • linux安装openssl、swoole等扩展的具体步骤
  • MD5加密原理解析及OC版原理实现
  • mysql 数据库四种事务隔离级别
  • vue数据传递--我有特殊的实现技巧
  • 安卓应用性能调试和优化经验分享
  • 机器学习中为什么要做归一化normalization
  • 记一次删除Git记录中的大文件的过程
  • 将 Measurements 和 Units 应用到物理学
  • 理解在java “”i=i++;”所发生的事情
  • 那些年我们用过的显示性能指标
  • 前端_面试
  • 浅谈Golang中select的用法
  • 如何在GitHub上创建个人博客
  • 时间复杂度与空间复杂度分析
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 试着探索高并发下的系统架构面貌
  • const的用法,特别是用在函数前面与后面的区别
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​flutter 代码混淆
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #pragma 指令
  • #Ubuntu(修改root信息)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (算法二)滑动窗口
  • (原創) 物件導向與老子思想 (OO)
  • (转)iOS字体
  • (转)创业家杂志:UCWEB天使第一步
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET 5种线程安全集合
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET开发者必备的11款免费工具