首页 > 其他分享 >链表逆序

链表逆序

时间:2024-04-29 23:13:05浏览次数:24  
标签:head list next 链表 single Phead 逆序

数据结构

链表逆序

笔试题:编写一个函数,实现单链表逆序
image

代码

//方法一:将尾结点循环插到头节点后面,实现逆序
void reverse_list(single_list *head)
{
     single_list *p = head->next; //将链表除头节点的节点保存
     head->next = NULL;//将链表断开
     single_list *tmp = NULL;
     while(p != NULL)
     {
        tmp = p->next;//将后面还未逆序的节点保存

        //将p插入到head的后面
        p->next = head->next;
        head->next = p;

       //将tmp的值赋给p
        p = tmp;
     }
}


//方法二://将尾结点指向他的前驱 尾结点的前驱指向前驱的前驱 以此类推 最后再将头节点指向原本的尾结点(待完善)
void reverse_list(single_list *head)
{
	//single_list *Phead = head->next;
    //single_list *Lhead = head;
    //找到尾结点的前一个结点
    //while(Lhead->next)
    //   	Phead = Phead->next;
    //Lhead = Phead->next;
    //while(Phead->next)
    //{
    // 	Phead->next->next=Phead;
    //   Phead->next = NULL;
    // }
}

标签:head,list,next,链表,single,Phead,逆序
From: https://www.cnblogs.com/lu-ciana/p/18166796

相关文章

  • 双向链表
    双向链表接口设计//指的是双向链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造双向链表的结点,链表中所有结点的数据类型应该是相同的typedefstructDoubleLinkedList{ DataType_tdata; //结点的数据域 structDoubleLinkedList......
  • 双向循环链表队列的接口设计
    /***************************************************filename:DoubleLinkQueue.c*author:[email protected]*date:2024/04/28*brief:构建双向循环链队的接口*note:None**CopyRight(c)[email protected]......
  • 链表
    P1996约瑟夫问题动态链表临时分配链表节点,使用完毕后释放链表节点。优点:能及时释放空间,不使用多余内存缺点:需要管理空间,容易出错。#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(int......
  • 双向循环链表接口设计
    /***************************************************filename:DoubleDoubleCirLkList.c*author:[email protected]*date:2024/04/25*brief:通过构建双向循环链表学习顺序存储*note:None**CopyRight(c)2024momolyl@126......
  • 链表逆序
    编写一个函数,实现单链表逆序,,函数原型如下:*voidreverse_list(single_listhead)程序代码如下:voidreverse_list(single_list*head){single_list*p=head->next;//将链表除头节点的节点保存head->next=NULL;//将链表断开single_list*tmp=NULL;while(......
  • 单向循环链表接口设计
    目录单向循环链表接口设计创建新的头结点创建新节点并初始化该节点工具函数遍历链表查找尾结点查找尾结点前置驱动找到指定结点查找指定节点前置驱动创建每一个新节点并插入到头部新建结点并插入到尾部新建结点并插入到指定节点之后删除头部结点删除尾部结点删除指定结点调试函数......
  • 双向循环链表的头插法的实现
    include<stdio.h>include<stdlib.h>typedefstructslik{intdata;structslik*next;structslik*prev;}sli;voidcreatesli(sli**head,inta[],intsize){for(inti=0;i<size;i++){sli*s=(sli*)malloc(sizeof(sli));s->data=a[i];......
  • 单向循环链表的头插法实现
    ``#include<stdio.h>``````include<stdlib.h>typedefstructslik{intdata;structslik*next;}sli;voidcreatesli(sli**head,inta[],intsize){for(inti=0;i<size;i++){sli*s=(sli*)malloc(sizeof(sli));s->data=a[i];s->......
  • 单向循环链表的尾插法实现
    `#include<stdio.h>include<stdlib.h>typedefstructslik{intdata;structslik*next;}sli;voidcreatesli(sli**head,inta[],intsize){for(inti=0;i<size;i++){sli*s=(sli*)malloc(sizeof(sli));s->data=a[i];s->next=NU......
  • 单向链表队列程序接口设计
    目录目录单向链表构建队列的接口函数库函数的调用指的是链表队列中的元素的数据类型,用户可以根据需要进行修改构造记录链表队列LinkQueueNode各项参数(链表队列结点的指针指向的下一个结点地址+链表队列的结点数据)的结构体构造记录链表队列LinkQueue各项参数(链表队列的队首地......