反转链表-C

C语言 单向链表反转问题 这样就可以得到一个链表,由于所有的节点都指向下一个节点,所以它是单向的,这样链表被称为单向链表。所有节点的内存地址在内存中不一定就是连续的,它是通过指针赋值地址的方式将所有的节点连在一起的。给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。 阅读详情

反转链表

#include<stdio.h>
#include <stdlib.h>
struct node
{
	int data;
	struct node *next;
};

struct node* ReverseList(struct node* pHead ) {
    // write code here  

        struct node *pre = NULL;
        struct node *cur = pHead;
        struct node *nex = NULL; // 这里可以指向nullptr,循环里面要重新指向
        while (cur) {
            nex = cur->next;
            cur->next = pre;
            pre = cur;
            cur = nex;
        }
        return pre;
        
}

int main(){
	struct node *head=NULL,*p,*q,*t, *last=NULL;
	int a=0;
	
	for(int i=1;i<=3;i++)//循环读入3个数
	{		
		scanf("%d",&a);
		p=(struct node *)malloc(sizeof(struct node));//动态申请一个空间,用来存放一个结点,并用临时指针p这个结点 
		p->data=a;//将数据存储到date数据域中 
		p->next=NULL;//设置当前结点的后继指针指向空
		if(head==NULL)
			head=p;//如果这是第一个创建的结点,则把指针指向这个点 
		else
			q->next=p;
		//如果不是第一个创建的结点,则将上一个结点的后继指针指向当前结点 
		q=p;//指针q指向当前结点 
	}
	last=q;
	last->next = NULL;
	
	head=ReverseList(head);
	
	t=head;
	printf("表是:");
	while(t!=NULL)
	{
		printf("%d   ",t->data);
		t=t->next;//指向下一个结点数据域 
	}
	 
	t=head;
	while(t!=NULL)
	{
		free(t);
		t=t->next;
	}
}
一文速学数模-K-means聚类算法实战:信用卡用户画像聚类分析 该项目算是非常经典的金融业务用户画像的基础分析了,主要根据用户信用卡使用行为数据进行分析,根据收集到的不同字段信息,对每个用户划分类别。这里需要说明一下的是,聚类模型只是将具有相似行为的大部分用户聚集到一个类别里面,这点并不会考虑到每个字段的含义,也就是分成的类别并不是用户价值等级,此类别仅仅是这个类别大体相同的信用卡用户行为对象,并不能给每个用户价值打上标签,那是评价模型做的事,这里要注意不要搞混淆了,用户价值评价是评价模型决定的,而画像是聚类模型分析的。 阅读详情

相关推荐

【Qt-4】QT基于qhttp-server搭建http服务器

QT搭建http服务器

WXG1011的博客 5714

逆序链表(反转链表)

/*function ListNode(x){ this.val = x; this.next = null; }*/ function ReverseList(pHead) { // write code here var head = {} head.next = pHead if(pHead == null || pHead.next == ...

SevenLee的个人博客 174

在matlab中运行自带的模块(以CCSDS LDPC Decoder模块为例)

最新版的获取需要注册 MathWorks 账户 访问账户注册页面:www.mathworks.cn/mwaccount/register。下载新版本或历史版本的MATLAB,请登陆:https://www.mathworks.cn/downloads 并下载。点击此处可以拷贝调用例程的命令,在matlab命令行输入即可自动获取代码。可以看到页面中写了该模块需要在R2022b以上版本使用。运行.m文件可以生成simulink运行所需要的数据。可以看到左侧下载到了官方历程的文件。之后双击slx文件即可打开。

qq_28455081的博客 887

链表的部分反转

链表的部分反转题目要求: 给定一个链表,翻转该链表从m到n的位置。 要求直接翻转而非申请新空间 如:给定1→5→7→4→6→3→8→5,m=2,n=4,返回 1→4→7→5→6→3→8→5 假定给出的参数满足:1≤m≤n≤链表长度。 算法核心思想 pNext = pCur->pNext; pCur->pNext = pHead->pNext;

Erice_s的博客 1713

单细胞测序避坑指南:为什么你的免疫组库数据总出问题?5‘转录组7个关键细节

本文深度解析了5'端单细胞测序技术在免疫组库研究中的应用与常见问题。文章从5'端建库的分子机制入手,重点剖析了其在捕获TCR/BCR序列上的独特优势,并系统梳理了从样本处理、文库构建到数据质控全流程中7个最易出错的细节,为研究者提供了一份实用的避坑指南,旨在帮助提升免疫组库数据的质量和可靠性。

weixin_29208327的博客 482

常用的集成TTL门电路

本篇主要分析了常用的逻辑门电路与非门,详细分析了电源原理。值得收藏。

ManagerUser的博客 5088

reverseNode 反转链表

反转一个单链表。 示例: 输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL 输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 思路一:迭代 保存三个变量pre,head,tmpHead分别对应当前节点head的前一个节点,当前节点,下一个节点,然后: head指向...

qq_26410101的博客 492

Android一个APP里面最少有几个线程

Android应用启动时,默认会创建一个进程,该进程中最少包含负责处理用户交互、UI更新等核心操作,所有与界面相关的逻辑必须在此线程执行。若在此线程执行耗时操作(如网络请求),会导致界面卡顿甚至触发ANR(应用无响应)。当对象重写了finalize()方法时,该线程负责将这些对象放入队列并调用其finalize()方法,完成资源释放后再由GC回收。监控的执行效率。如果finalize()方法执行超时(默认10秒),此线程会触发虚拟机退出以防止应用长时间阻塞。

编程进化论 613

C语言 单链表的反转

C语言 单链表的反转 一、简述 记--简单的将单链表的数据顺序进行反转。如将原来的顺序1 2 3 4 5 6 7 反转为:7 6 5 4 3 2 1 二、方式1:头插法 2.1 头插法1--类似新建链表 2.1.1 思路:断开链表头,然后以头插法的方式将原链表的数据添加链表。 2.1.2 测.........

Genven_Liang的博客 2万+

NVIDIA Isaac Sim 入门教程(二)

Omniverse Isaac Sim 的工作空间非常容易自定义。调整用户界面的大小、停靠、取消停靠、添加和移除面板都非常容易。进入顶部菜单栏,单击下拉菜单最下方的窗口 > 视口 > 视口 2(现在工作区中应该会出现一个名为 "视口 2 "的新视口。如果您想创建更多的视口,请按照相机检查器扩展进行操作。单击并拖动视口 2 的顶部标题以激活停靠部件。拖放到原始视口的右侧,将两个视口并排放置。单击并向左拖动视口 2 的左侧,使视口大小相等。

机器人控制与仿真应用 6545

生信分析进阶14 - 从GTF文件提取基因、转录本、TSS和TSE

从GTF文件提取基因、转录本、TSS和TSE

LittleComputerRobot的博客 678

双向链表反转【C语言】

双向链表反转【C语言】 题目: 实现双向链表的反转 时间复杂度为O(n) 空间复杂度为O(1) 代码: /*9*/ #include <stdio.h> #include <stdlib.h> #define elemtype int int num=0; typedef struct dNode { elemtype da...

在人间已是颠 1691

【ROS】Nav2源码之nav2_collision_monitor(碰撞监测)详解

nav2_collision_monitor碰撞监视器是一个节点,为机器人提供了一个额外的安全级别。它使用来自传感器的数据,执行若干与避免碰撞相关的任务,绕过成本图和轨迹规划器,监测是否需要紧急停止或者减速。

郭老二 1457

反转链表详解(C语言)

本文介绍了力扣206反转链表的六种解题方法,并附有C语言AC代码和详细注释

LiuYaoheng的博客 1647

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【C语言】Leetcode 206.反转链表

通过代码和图解讲解Leetcode第206题翻转链表。

kevin_blog 2302

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C语言反转链表的五种方法

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]链表中节点的数目范围是 [0, 5000]

2501_93882087的博客 822

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C语言——链表及链表反转

本文系统介绍了链表数据结构及其操作。链表由节点组成,每个节点包含数据域和指向下一节点的指针域。相比数组,链表具有动态大小、高效插入删除等优点,但随机访问较慢。文章详细讲解了链表的基本操作(创建、遍历、插入、删除)和多种反转方法(迭代法、递归法、头插法)。同时探讨了链表的应用场景与数组的区别,指出链表适合频繁插入删除的场景,而数组适合随机访问。最后比较了动态分配(堆内存)和静态分配(栈内存)两种创建链表方式的差异。全文通过代码示例展示了链表的核心操作和实现逻辑。

zxtzxt12138的博客 1401

头插法链表反转c语言,用头插法反转链表

题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:typedef char item_t;typedef struct node {item_t item;struct node * next;} node_t;分析: 使用头插法可以快速实现反转。所谓头插法, 即每次将新节点插入到链表的头节点之前。实现代码如下:#include #include typedef ...

weixin_31081671的博客 1032

Objective-C语言的链表反转

在Objective-C中,我们通常使用类来定义节点。以下是一个简单的节点定义:// 节点存储的数据// 指向下一个节点的指针@end@end```链表类一般包含一个头节点和一些基本操作,如插入节点、删除节点以及遍历链表等。以下是链表的基本结构:@end// 插入节点ListNodeif (!} else {ListNode// 打印链表@end```通过本文的介绍,我们深入探讨了链表的基本概念及其在Objective-C中的实现方法。

2501_91366331的博客 377

手撕C语言题典——反转链表

反转链表同样也是力扣上一道简单题,适合刚学过单链表的我们更好的理解链表相关知识~

Antigonos的博客 1041

c 语言中双向链表逆转编程题,C语言实现双向链表的反转

(a)原始链表(b) 反转后的双向链表 下面是一个用于反转双向链表的简单方法。所需要做的事情就是交换每个节点的前向指针和后向指针,然后调整链表的头指针和尾指针。#include struct Node{int data;Node *next; // 指向下一个节点Node *prev; // 指向前一个节点};//对链表进行反转void reverse(Node **head){Node *tem...

weixin_39631261的博客 1491

链表反转--c语言实现

今天找一个链表问题时,动手用c语言实现了下,不多说直接上代码/* 0 2 4 6 8 8 6 4 2 0 Press any key to continue */ #include #include #define ELTYPE int typedef struct node { ELTYPE m; struct node *next; } *NODE; void

月下犀牛 1万+

链表反转(C)

b2为空的时候我们有判断,不会再去访问,但是在b2为空之前b3就已经指向空了,而且还会去访问,这在程序中是不允许的,所以我们要加判断 if(b3);这就是我们要达成的目标,不是让节点内容改变,而是改变节点指向。看到这里我们会疑问,b2不是结束条件么,为什么还要判断b3呢?这里给的初始条件是{1,2,3,4,5}

wanganqiqi的博客 204

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

问题描述: 单链表反转就是把原单向链表顺序倒置。虽然这仅仅是链表操作中比较基础的一个,但是熟练写出单链表反转,对很多刚刚接触代码不足一年的同学来说仍然有一定难度。 这篇博客将使用 C语言简单实现这一操作,并与完整的输入输出功能一起实现,方便读者运行代码进行测试。 代码如下: /** * (C) Copyright Bob Ding, Xidian University. 2021. */ #include <stdio.h> #include <stdlib.h> /**

Bob Ding的博客 3566

C 语言实现五种反转链表的方法解析

int val;// 节点值// 指向下一节点的指针} ListNode;方法时间复杂度空间复杂度特点迭代法O(n)O (1)(常数空间)高效、易理解,推荐使用递归法O(n)O (n)(递归栈)代码简洁,但栈深风险栈法O(n)O (n)(栈 / 数组)利用栈特性,逻辑直观头插法O(n)O(1)构建新链表,插入头部实现就地反转法O(n)O(1)三指针操作,更接近底层实际开发推荐:迭代法,因为它兼顾时间和空间效率,代码逻辑清晰,无递归栈溢出风险。

2501_93769870的博客 863

C语言——链表指定区间反转

本文介绍了链表创建与区间反转的实现方法。链表节点包含值和指针,通过数组或交互式输入创建链表。重点讲解了区间反转算法,使用哑节点处理特殊情况,通过遍历和指针操作实现指定区间的反转。对比了使用哑节点和直接返回头节点的不同效果,演示了反转前后的链表变化。代码示例展示了完整的链表操作流程,包括创建、反转和释放内存等步骤。运行结果表明,使用哑节点能正确处理从头节点开始反转的情况,而直接返回头节点会导致部分链表丢失。

zxtzxt12138的博客 336
上一篇: BUPT果园物联大二下不完全回忆
下一篇: 二进制与十进制相互转化
本小爷世界第一花式帅
博客等级 码龄7年 103粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值