单向链表的创建和逆转(完整程序)

单向链表的反转(c++实现) 目录前言单向链表的反转实现代码总结 前言 本篇文章接着前文单链表的插入、删除(c++实现)实现链表的反转,主要也即是在前文的基础上完成了一个InvertList()函数。 单向链表的反转 通过前面两篇文章的学习,已经对于链表的操作有一定掌握,而反转的实现就是一点小技巧,需要用到三个指针变量,类似于两个数交换的思想,层次递进。 现在假设定义pre、phead、temp三个指针变量,用phead指向链... 阅读详情

自己没事了随便写的,仅做参考!不好的地方麻烦指出。吐舌头

友情提示:如果要拷贝这段代码,可以点击代码上方的很小的字--view plain,(不知道你看见没?)然后再全部选中之后再复制。如果直接复制会把左边的行号也复制进去。

#include <stdio.h>
#include <malloc.h>
typedef struct test
{
    int a;
    struct test *next;
}lianbiao;


lianbiao* create()//创建链表
{
    lianbiao *head,*temp;
    int i;
    printf("请输入一些整数,以0结束:");
    temp=head=(lianbiao *)malloc(sizeof(lianbiao));
    scanf("%d",&i);
    if(i==0)
    {
        printf("you input zero!exit now!");
        return head;
    }
    head->a=i;
    head->next=NULL;
    while(1)
    {
        scanf("%d",&i);
        if(i==0) 
            break;
        else
           {
               temp->next=(lianbiao *)malloc(sizeof(lianbiao));
               temp=temp->next;
               temp->a=i;
               temp->next=NULL;
           } 
    }
    return head;
}
lianbiao* reverse(lianbiao *p)//逆转链表
{
    lianbiao *temp1,*temp2;
    if(p->next==NULL)
    {
        printf("链表节点数小于2,无法逆转!\n");
        return p;
    }
    int flag=0;
    while(p->next!=NULL)
    {
        if(flag==0)
        {
            temp1=p;
            temp2=p->next;
            p->next=NULL;
            p=temp2;
            flag=1;
            continue;
        }
        temp2=p->next;
        p->next=temp1;
        temp1=p;
        p=temp2;
    }
    p->next=temp1;//将原链表的末尾节点指向倒数第二个节点
    return p; 
}
void print(lianbiao *p)
{
    while(p->next!=NULL)
    {
        printf("%d ",p->a);
        p=p->next;
    }
    printf("%d ",p->a);
    printf("\n");
}
int main()
{ 
    lianbiao *temp;
    temp=create();
    print(temp);//打印出原链表
    print(reverse(temp));//打印出逆转后的链表
    return 0;
}

6-1 单链表逆转 (20分) 本题要求实现一个函数,将给定的单链表逆转。 函数接口定义: List Reverse( List L ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode List; /* 定义单链表类型 */ L是给定单链表,函数Reverse要返回被逆转后的 阅读详情

相关推荐

单链表逆转(数据结构)C语言

单链表逆转(数据结构) 此题是参考了很多博主总结了一下自己觉得最好理解的 本题要求实现一个函数,将给定的单链表逆转。 函数接口定义 List Reverse( List L ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode ...

amicoyuan的博客 1706

如何实现单向链表的反转(详解+代码实现)

单向链表的反转 反转API: public void reverse():对整个链表反转; public Node reverse(Node curr):反转链表中的某个结点curr,并把反转后的curr结点返回; 使用递归可以完成反转,递归反转其实就是从原链表的第一个存数据的结点开始,依次递归调用反转每一个结点,知道把最后一个结点反转完成,整个链表就反转完毕。代码如下: public class......

qq_43751200的博客 3171

设计一个算法,通过遍历一趟,将链表中所有节点逆转,仍利用原表的存储空间

【题目分析】利用前插法将元素逆转 完整代码实现 #include <iostream> using namespace std; //定义存储 typedef struct LNode { int date; struct LNode *next; } Lnode, *Linklist; //链表初始化 void init(Linklist &L) { L = new Lnode; // 开辟空间 L->next = NULL; //头节点置为空

qq_47142993的博客 6625

单链表反转(逆置)——(四种方法实现)

链表逆置就是把最后以一个提到坐前面,倒数第二个放到第二个……直到第一个到最后一个。 由于链表没有下标,所以不能借助下表来实行数据的逆置,要靠空间的转移来完成链表的逆置 这里采用没有头节点的链表来实现逆置。 第一种——头插法 算法思想:逆置链表初始为空,表中节点从原链表中依次“删除”,再逐个插入逆置链表的表头(即“头插”到逆置链表中),使它成为逆置链表的“新”的第一个结点,如此循环,直至原链表为空。 #include <stdio.h> #include <stdli...

m0_58397166的博客 8万+

C语言实现单向链表逆转项目实战

单向链表是一种基础且重要的动态数据结构,由一系列节点(Node)组成,每个节点包含两个部分:数据域(data)和指针域(next)。数据域用于存储数据信息,而指针域则指向下一个节点,形成链式存储结构。与数组不同,链表在内存中不要求连续空间,通过指针动态连接各节点,因此具有更高的灵活性和扩展性。其结构如下图所示:graph TDA[节点1] --> B[节点2]B --> C[节点3]

weixin_42476987的博客 449

本地部署 Anything LLM+Ollama+DeepSeek R1 大模型并实现外部访问

DeepSeek 一经发布就引起社会的广泛的关注,因为 DeepSeek 的价格低廉,性能卓越,提供了多种使用方式,满足不同用户的需求和场景。本文将详细的介绍如何在本地 Windows 上安装部署 Anything LLM + Ollama 来实现用户和 DeepSeek-r1 对话的功能以及利用路由侠内网穿透实现外网访问。

lyxnwct的博客 1896

单链表的反转(C语言实现)

链表的反转或者说逆序的核心思想:遍历链表将所有节点依次摘链,并重新挂在链表头。 假设我们有一个链表,如图 A节点本身就是头节点,所以不必将其再摘链,挂链 所以第一步我们将B节点提到最前面 这个时候C节点变成了A节点的后继节点,我们需要把C节点提到最前面 这样D节点成了A节点的后继节点,依次类推,我们每次只需要将A节点的后继节点摘链并提到最前面即可完成整个链表的反转。 关键代...

qq_37406462的博客 2664

XR Interaction Toolkit实战:为HTC Vive Cosmos打造抓取、投掷与UI交互(Unity 2023教程)

本文详细介绍了如何使用Unity 2023和XR Interaction Toolkit为HTC Vive Cosmos开发抓取、投掷与UI交互系统。通过实战案例'VR投掷训练室',从基础配置到高级功能实现,涵盖物理抓取、精准投掷机制和VR UI交互设计,帮助开发者提升VR交互开发技能。

weixin_30562507的博客 255

c语言实现单链表的创建(完整版)

使用c语言实现单链表是考研的重点。但是如何实现却是一个难点。下面是我写的一个简单的创建单链表的代码。 #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct node{ int data; struct node *next; }LinkList; //结构体的定义 LinkList *create_Link(){ //创建单链表的主要代码(尾插法建立单链表) LinkLi

qq_44858403的博客 1万+

提升仿真效率:Synopsys VCS高级编译选项优化技巧(2023最新版)

本文深入探讨了Synopsys VCS 2023版本中的高级编译选项优化技巧,帮助工程师提升仿真效率。通过并行编译、智能代码分析、精准覆盖率采样等策略,结合真实案例展示如何显著缩短仿真周期并优化资源使用,适用于数字芯片验证和大型SoC设计。

weixin_30338481的博客 113

高精度计算Π的值(C语言)

题目要求 限制使用双向链表作存储结构,请根据用户输入的一个整数(该整数表示精确到小数点后的位数,可能要求精确到小数点后500位),高精度计算PI值。可以利用反三角函数幂级展开式来进行计算。 输入5 输出3.14159 思路分析 反三角函数幂级展开式 由公式可以看出,只要计算出来每一个R(n)的值再相加取二倍就可以得到Π的值。 经过推算,要是令R(1)=2,只需要将每个R(n),相加即可。 因...

weixin_46251155的博客 8032

线性结构:单向链表的逆转

逆转单向链表的意思就是,给定你一个单向链表,和一个整数N,N为要逆转的结点数,要求你把链表从头结点到第N个结点给逆转过来。意思是这样的,如下图所示:(逆转1)给出一个单向链表,和给定整数N=4,也就是要求把该链表从头结点(Head-&gt;Next)开始到第四个结点,把他们逆转过来,像下面逆转后头结点由1变成了4,然后1后来链接5。那么如何去实现这样的逆转链表?既然要改变结点的序列,我们自然而然想...

大力海棠的博客 1万+

C++实现设计ATM机系统

这个示例实现了一个基本的ATM机系统,支持注册、登录、存款、取款、查询余额和保存数据等功能。当然,这只是一个简单的ATM机模拟,实际的ATM机系统需要更复杂的逻辑和更严格的安全措施。C++编写一个简单的ATM机系统,我将提供一个基本的实现示例,但由于ATM机系统的复杂性和安全性要求,这只是一个简单的模拟,不适合在实际环境中使用。试设计一简单模拟ATM机系统,系统以菜单方式工作,采用自定义函数设计各功能模块被主菜单调用,使之能提供以下基本选项。=========欢迎使用ATM=========

走向CTO的路上... 1243

单向链表逆转

以下例子演示逆转一个单向链表://// test in vc++8.0 xp#include #include using namespace std;struct Node { int  item; Node* next; Node( int item_info, Node* pLink ) : item(item_info), next(pLink) { }};type

bluesky_03的专栏 987

YoloV8优化:感受野注意力卷积运算(RFAConv),效果秒杀CBAM和CA等 | 即插即用系列

感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4264

2025.06.16【转录组】|Ribo-seq数据流程详解(二 基因组比对)

本文详细介绍了Ribo-seq数据分析中的比对流程,包括环境准备、STAR索引构建、比对参数设置及结果统计可视化。通过samtools和R脚本实现比对质量评估,提供常见问题解决方案和关键指标解读。该流程强调比对参数优化和质量控制,为后续翻译组学分析奠定基础。

1976

经度算法:逆转单向链表

逆转单向链表,听上去是一个非常简单的题目,但如果在面试中遇到它,能够将它完完整整没有 bug 的写出来是着实需要费一番功夫的。期望在那急短的笔试题环节就轻松搞定这道题,那真是非常有算法天赋的人才能做到的事。天才总是极少数的,多数都是像我这样的庸才。单向的链表,不同于 Java 里面的 LinkedList(双向的链表)。链表中每个节点之间通过 next 指针串接起来,会有一个链表头和链表尾指针 h...

布道 689

机器人在果园内行巡检仿真(2D雷达、realsense相机)

DiffBot是一种具有两个轮子的自主差动驱动机器人。它的主要处理单元是一个运行Ubuntu Mate 20.04和ROS 1 (ROS Noetic)中间件的Raspberry pi4b。该存储库包含ROS驱动包、真实机器人的ROS控制硬件接口和模拟DiffBot的配置。修改配置文件orchard_world.launch。

如果想成为中心,那么就到中心去吧。 1311

java实现链表逆转(附带源码)

java实现链表逆转(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1899

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C语言单向链表正向、反向、排序插入和链表逆转

一、链表定义 单向链表就像一根绳子一样,拿出来是一串,顺序表也是一串,但和单向链表不同,顺序表是连续存储的,不用管下一个节点位置在哪,反正就在后面,而单向链表在内存中是不连续存储的,看到有坑就放进去,然后还得保存放置的地址。所以,定义单向链表就是定义一个结构体,结构体里有两个成员,一个是要保存的数据,一个是下一个节点的地址。 typedef struct NODE{ int data; struct NODE *next; }NODE,*NEXT; 我这里用typedef取别名取了一个结构体和结构体指

qq_45911878的博客 1665

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

单链表逆转的2种方法。

单链表逆转方法有很多: 这里谈两种: 1.再建一个链表然后,边遍历原来的链表,便是用头插法,完成新的单链表,这样子虽然内存损耗比较大,但是也是勉强可以完成的。 2.使用3个指针,逐个节点的逆转。 p q两个指针分别指向想要逆转关系的两个节点, p指向前一个节点,q指向后一个节点 r指向q后余下的链表。 具体操作: 这里我们忽略头节点,也是说连带头节点一起逆转。 初始化操作: p...

FREE_CODER 1万+

BAT 经典算法笔试题 —— 逆转单向链表

不善言谈的优秀程序员在面试中往往是要吃巨亏的,你没有办法通过说话来轻易证明自己的实力。不论是大厂还是小厂,大部分面试官都不具备优秀的面试能力,它们也只能通过三言两语观察一...

codehole_的博客 600

【算法设计-单链表的逆转】单链表逆转实现

1.在Θ(n)时间内将链表转置,而且只能需要少量的额外空间 这里需要用3个指针使得q指向p然后依次后移。 代码: #include using namespace std; typedef struct Node { int data; struct Node *next; }LinkList; LinkList* Create_End(); void printLi

wodeai1625的专栏 5939
上一篇: Makefile 调试
下一篇: 搭建交叉编译环境
simonjay2007
博客等级 码龄17年 104粉丝 112原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值