有序单链表删除值域重复结点算法

MoveIt控制睿尔曼RM65机械臂:从仿真到实机的3种控制模式对比 本文详细解析了使用MoveIt框架控制睿尔曼RM65机械臂的三种核心模式:拖动规划、目标姿态规划和Python API控制,从Gazebo仿真到实机部署的完整实现路径。通过ROS环境配置、控制参数优化及实机过渡技术,为工业自动化和机器人研究提供实用指南。 阅读详情

已知一个有序单链表L(允许出现值域重复的结点),设计一个高效算法删除值域重复的结点,并分析算法的时间复杂度。
解:由于是有序单链表,所以相同值域的结点都是相邻的。用p扫描递增单链表,若p所指结点的值域等于后继点的值域,则删除后者。

实现代码如下:

#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct LNode
{
	ElemType data;
	struct LNode *next; 
} LinkNode;

void CreateListF(LinkNode *&L,ElemType a[],int n)
//头插法建立单链表
{
	LinkNode *s;
	L=(LinkNode *)malloc(sizeof(LinkNode));  	//创建头结点
	L->next=NULL;
	for (int i=0;i<n;i++)
	{	
		s=(LinkNode *)malloc(sizeof(LinkNode));//创建新结点s
		s->data=a[i];
		s->next=L->next;			//将结点s插在原开始结点之前,头结点之后
		L->next=s;
	}
}

void DispList(LinkNode *L)
{
	LinkNode *p=L->next;
	while (p!=NULL)
	{	printf("%d ",p->data);
		p=p->next;
	}
	printf("\n");
}

void dels(LinkNode *&L)
{
	LinkNode *p=L->next,*q;
	while (p->next!=NULL) 
	{
		if (p->data==p->next->data)		//找到重复值的结点
		{
			q=p->next;					//q指向这个重复值的结点
			p->next=q->next;			//删除*q结点
			free(q);
		}
		else							//不是重复结点,p指针下移
			p=p->next;                  //同时开启下一个循环从第二个元素开始 
	}
}

void DestroyList(LinkNode *&L)
{
	LinkNode *pre=L,*p=pre->next;
	while (p!=NULL)
	{	free(pre);
		pre=p;
		p=pre->next;
	}
	free(pre);	//此时p为NULL,pre指向尾结点,释放它
}
int main()
{
	LinkNode *L;
	ElemType a[]={1,2,2,2,3,3,3,3,3};
	CreateListF(L,a,9);
	printf("L:"); DispList(L);
	dels(L);
	printf("L:"); DispList(L);
	DestroyList(L);
	return 0;
}

在这里插入图片描述

Mamba SSM 实战:IMDb 文本分类 + Mamba-ssm 全流程 Mamba SSM 文本分类链路:IMDb 二分类 → MambaLMHeadModel (d_model=256, n_layer=8, d_state=16, exp2=2) → 末 token 分类头。5 epoch 达 89.2% 准确率 (与 BERT-base 持平), 但显存降低 44% (3.5GB vs 6.2GB)。建议序列长度 ≥ 1024 再选 Mamba, 短序列 (< 512) 用 BERT 更高效。扩展时注意d_state。 阅读详情

相关推荐

STC32G电调调试血泪史:从TPH1R403NL MOS管烧毁到PWM信号异常排查全记录

本文详细记录了STC32G无刷电调调试过程中的常见问题与解决方案,包括MOS管烧毁、PWM信号异常等关键故障排查。通过电源系统检测、驱动电路验证及三相平衡调试等实战经验,帮助硬件爱好者快速定位问题,提升电调调试效率。特别针对TPH1R403NL等MOS管的保护措施进行了重点分析。

weixin_33736048的博客 551

删除链表中重复的结点(python)

Leetcode. 82. Remove Duplicates from Sorted List II 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如: 输入:1-&gt;2-&gt;3-&gt;3-&gt;3-&gt;4-&gt;4-&gt;5-&gt;6 输出:1-&gt;2-&gt;5-&gt;6 class Solution(...

不要怕 921

stm32F103定时器使用方法

文章目录1、STM32的Timer简介2、普通定时器TIM2-TIM52.1 时钟来源2.2 计数器模式2.3 编程步骤3、程序源代码4、总结 1、STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8个定时器。 其中TIM1和TIM8是能够产生3对PWM互补输出的高级登时其,常用于三相电机的驱动,时钟

weixin_43582209的博客 4515

删除有序链表中重复的元素(时间复杂度为O(n),空间复杂度为O(1)!!!!)

【代码】删除有序链表中重复的元素(时间复杂度为O(n),空间复杂度为O(1)!!!!

ABABC1234的博客 504

新手避坑指南:用PIC16F15355开发板和MCC完成第一个UART通信项目

本文为新手提供了使用PIC16F15355开发板和MPLAB代码配置器(MCC)实现首个UART通信项目的完整指南。通过图形化配置系统时钟、UART参数并自动生成驱动代码,手把手教学如何避开常见陷阱,快速完成从环境搭建、代码编写到调试输出的全流程,助力开发者高效入门PIC单片机开发。

bash7scripter的博客 725

【IPC】ONVIF Device Manager 测试工具

介绍onvif 协议测试工具

以实战经验介绍行业知识 1961

Java 数据结构与算法 单链表

单链表通过结点存储数据,每一个数据都是一个结点 结点由当前数据的指针(这里可以理解为java的对象)、数据内容、下一个结点的指针三部分组成 单链表的结构如下图 看懂下面代码所需知识:java基础 由于写的注释有点多,代码不是很简洁,望理解,适合新手阅读 /** * 基础单链表增删改查的实现 * 思路: * 1.创建存储基本信息的结点(Node)类 * 2.创建单链表操作类对这些基本信息进行增删查改 */ public class SingleListDemo1 { ..

c_o_d_e_的博客 303

算法 | 植物根茎生长优化算法(PRGO)原理、公式及应用,matlab代码(2025最强优化算法)

【代码】算法 | 植物根茎生长优化算法(PRGO)原理、公式及应用,matlab代码(2025最强优化算法)

尘世冰封的专栏 1017

删除单链表中的重复节点

删除单链表中的重复节点 一、题目描述 已知单链表L,写一算法,删除其中的重复节点。 二、分析解答 2.1 知识点分析 本题主要考察链表的相关知识点,其中包括:单链表的结构、创建、遍历、删除等操作。要想熟练的使用链表,必须对这些有着清楚的认识。 链表是线性结构的一种物理实现,除此之外,线性结构还可以使用顺序存储结构来实现。...

IT之旅 的博客 1万+

YOLOv12涨点改进| Kimi团队 2026 |独家创新首发、注意力改进篇|爆火AttnRes残差自注意力模块,含多种创新改进,借助残差思想,缓解细节信息在传播过程中被稀释,促进YOLOv12涨点

🔥本文提出AttnRes残差自注意力模块改进YOLOv12模型,通过深度维度的注意力加权机制替代传统固定残差累加方式。该模块能自适应选择更有价值的历史层特征进行聚合,缓解浅层信息在深层传播中被稀释的问题,提升小目标和复杂场景的检测能力。文章详细介绍了模块结构、原理及优势,并提供了完整的代码实现和配置方法,包括三种改进方案:yolov12n_AttnRes.yaml、yolov12n_AttnRes-2.yaml和yolov12n_A2C2f_AttnRes2D.yaml。

Ai缝合怪、助力小伙伴高效发论文 183

agent-browser 安装笔记(OpenClaw)

【代码】agent-browser 安装笔记(OpenClaw)

tiantiantbtb的博客 1241

删除单链表中的重复节点(删除多余项)

题目:如何删除单链表中的重复节点(即保证每个元素只出现一次,删除多余的,且后来出现的元素)。 一个没有排序的单链表,如 list = {a, 1, x, b, e, f, f, e, a, g, h, b, m},请去掉重复项,并保留原顺序,以上链表去掉重复项后为 newList = {a, 1, x, b, e, f, g, h, m},请写出一个高效的算法。思路分析: 第一种方法:因为要求算

小僧Coding 3万+

科研——BIBM论文修改和提交

BIBM的相关操作流程汇总

Blackoutdragon的博客 6689

数据结构例17.有一有序的单向链表(允许出现值相同的结点),试设计一个算法 将值重复的结点删除,使所得的结果表中的值均不相同。

/有一有序的单向链表(允许出现值相同的结点),试设计一个算法 将值重复的结点删除,使所得的结果表中的值均不相同。/ # include <iostream> # include <stdlib.h> # include <stdio.h> using namespace std; typedef struct Node { int elem; struct Node *next; }*Linklist; void inlinklist(Linklis

m0_51374762的博客 1926

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

计算机控制技术及应用

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

【数据结构---10】删除该链表中重复的结点

题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...

Austin_Yan的博客 339

深度学习工具包 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")

c语言每日一练

题目: 已知一个有序单链表L(允许出现值域重复的节点),设计一个高效的算法删除值域重复的节点,并分析时间复杂度; 解: 我的做法: void deletecommom(Linklist L){ Linklist pre, p; p=L->next; pre=L; while( p!=NULL){ if( p->data < p->next->data ){ p=p->next; }e

Argonum的博客 737

IDEA的使用指南

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

有序链表重复元素删除

有一个递增非空单链表,设计一个算法删除值域重复的结点。例如,{1,1,2,3,3,3,4,4,7,7,7,9,9,9}经过删除后变成{1,2,3,4,7,9}。 #include<iostream> using namespace std; //考试时不用写出来 typedef struct LNode { int data; struct LNode *next; }LNode; void del(LNode* L) { LNode* p = L->next, * q; wh

A936906294的博客 345

有序的单链表删除重复的元素

考研联系第三题 问题:在一个递增有序的单链表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,试表中不再有重复元素,例如(7,10,10,21,30,42,42,42,51,70)将变化为(7,10,21,30,42,51,70). 算法思想:由于是有序表,所有相同值域的结点都是相邻的。用p扫描递增单链表L,若*p结点的值域等于其后继结点的值域,则删除后者,否则p移向下一个...

黄坤的博客 1586

删除单链表中值域重复的点

题目描述:有一个递增非空单链表,设计一个算法删除值域重复的结点;例如{1,1,2,3,3,3,4,4,4,7,7,7,9,9,9}经过删除后变成{1,2,3,4,7,9}———-亲测有效#include <stdio.h> #include <stdlib.h>#define ERROR NULL typedef enum {false, true} bool; typedef int Elemen

happy_bigqiang的博客 2534

删除链表中重复的结点

Description:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 /* public class ListNode { int val; ListNode next = null; ListNode(int val) {

Lutte_的博客 289

线性表 p35

1、顺序表用数组A[]表示,表中元素下标0~m+n-1,前m个后n个元素递增有序,设计算法使整个表有序 void Sort(int A[],int m,int n){ int temp; for(int i=m;i<m+n;i++){ temp=A[i]; for(int j=i-1;j>0&&temp<A[i];j--) A[j+1]=A[j]; A[j]=temp; } } 2、对两个递增有序的单链表AB(带有头结点,分别有mn个元素),设计算法

云淡风轻_的博客 294

NEFU-数据结构 实验1-线性表

NEFU-数据结构 实验1-线性表

2301_80330802的博客 1149

王道数据结构编程题(链式存储线性表)

王道数据结构编程题(链式存储线性表)

We choose to go to the moon in this decade and do the other things, not because they are easy, but beacase they are hard. 751

南京航空航天大学-数学学院-数据结构期末考试复习资料(2024年版)

int index;//定义当前节点int weight;//定义边的权重//指向下一个节点}AR;//存储定点名字的动态数组int vexnum;//图中顶点的个数int type;//图的种类(1为有向网,0为无向网)AR *N;//为邻接表的表头定义动态数组int **A;//邻接矩阵动态数组}GH;//存储点名的动态数组int vexnum;//图中顶点个数int type;//图种类int **A;//邻接矩阵数组。

m0_65464221的博客 2429

C++Qt数据结构可视化题目(78题)[2024-12-22]

5.设有一个线性表 𝐿=(𝑎1,𝑎2,⋯,𝑎𝑛)存放在一维数组𝐴[𝑀]中的前n个数组元素位置(𝑀≥𝑛)。77.已知关键字序列为(26, 27, 14, 13, 22, 17, 12, 23, 11, 28, 25, 24, 19, 18, 16, 15, 20, 21),设计可视化算法画出按照递增序列可视化希尔排序每一趟过程。74.假设关键字序列为(21,12,13,6,19,30,38,39,42,29,48,61,58,79,49,81),设计可视化算法画出分块查找表,并给出某个元素𝑥的查找过程。

程序设计 1036

删除单链表中数值绝对值相等的结点,只保留一个,保证时间复杂度高效

建立record数组,以空间换时间

weixin_51304639的博客 670
上一篇: 单链表递增排序算法
下一篇: 删除一个单链表中元素值最大结点
Pikepika
博客等级 码龄7年 95粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值