zoukankan      html  css  js  c++  java
  • c语言单向链表逆转实现方法

    自己理解的思路如下所示:

    从第二个节点开始,先记录下一个节点,把第二个节点移到头节点之前,
    头节点变为移动的这个节点
    之前记录的节点变为接下来要移动的节点
    用for循环重复
    最后把原来头节点变成尾节点(*next指向NULL)
    返回链表 的头节点

    c语言实现代码如下:

    struct stu *reserve(struct stu *head)
    {

    struct stu *p1,*p2,*p3;    
    p1=head;
    p2=p1->next;            // 这个结点为要移动的结点
    while(p2) //如果下一个节点存在
    {

    p3=p2->next;       //记录的为要移动的结点的下一个结点
    p2->next=p1;       //移动结点到最前
    p1=p2;          //移动的结点变为新表头
    p2=p3;          //下个结点变为要移动的结点

    }
    head->next=NULL;        //移动完毕后原来head变为表尾,让它指向为空
    head=p1;           //指向逆转后的头节点  
    return head;

    }


  • 相关阅读:
    servlet简介
    synchronized锁的升级过程
    volatile的作用及原理
    redis数据类型
    mysql的主从复制
    redis的缓存穿透,缓存击穿,缓存雪崩
    网络从io到多路复用
    mysql索引
    mysql的执行计划
    mysql 常用函数
  • 原文地址:https://www.cnblogs.com/fqfzs/p/9123221.html
Copyright © 2011-2022 走看看