数组实现模拟链表及其理解

无中生有之突击NOIP(2)--栈,队列,链表 1、队列定义:形如我们排队买票,第一个站队的人第一个买票一样,一个可以控制变量先进先出的结构体里,我们称之为队列。理解:我们可以想象出一排东西整齐存放于一行里,我们要做的是用一个可以压缩的框框,通过从前到后移动,来决定我们框住的值到底为多少。 实现代码如下:#include<stdio.h> #include<algorithm> int main(){ int q[102]={0,6 阅读详情

模拟链表在<<啊哈算法>>提出了一种实现方式,代码如下

#include<stdio.h>
int main()
{
	int data[101], right[101];//定义了两个数组
	int i, n, t, len;
	scanf_s("%d", &n);//读入数组的元素个数n
	for (i = 1; i <= n; i++)
		scanf_s("%d", &data[i]);//读入数组元素
	//data数组里面存储的是元素
	len = n;//len也是数组元素个数
	for (i = 1; i <= n; i++)
	{
		if (i != n)
			right[i] = i + 1;
		else
			right[i] = 0;
	}
	//这个不是很理解,就执行几次循环看一下吧
	// 假设长度为5,输入1 2 3 4 9
	//第一次的时候right[1]=2;
	//第二次的时候right[2]=3;
	//第三次的时候right[3]=4;
	len++;//现在len比数组元素个数多一个
	scanf_s("%d", &data[len]);//获取要插入的数值存到data[len]
	//假设插入个5
	t = 1;
	while (t != 0)
	{
		if (data[right[t]] > data[len])
		{
			right[len] = right[t];
			right[t] = len;
			break;
		}
		t = right[t];
	}
	//再看这个循环right[1]=2,data[2]与data[len]比较
	//不满足然后t=2
	//第二次循环right[2]=3,data[3]与data[len]比较
	//不满足然后t=3
	t = 1;
	while (t != 0)
	{
		printf("%d", data[t]);
		t = right[t];
	}
	getchar();
	getchar();
	return 0;
}

但是参照他给出的解释并没有非常理解这个的原理,于是自己结合这个代码理解了一下,并分享在下面.

结合这个图,也还是没有理解,但是想到既然叫模拟链表,跟链表还是有共同之处的,于是生套链表,试图理解.

那样的话,首先花了这个图

 

 

 这个图的话,更好理解,在这两个模拟链表中,t=1类似头指针,然后data[1]和right[1]类似数据域和指针域,t=right[t];相当于单链表里面的p=p->next;作用是找到下一个结点.

结合<<啊哈算法>>中"right是存放当前序列中每一个元素右边的元素在数组data中位置的",这句话应该理解为"当前序列是data,比如到了data[5],这个元素,那么data[5]下一个元素如果表示为data[i]的话,那么right[5]=i;"

Python爬虫实战:如何优雅地处理BOSS直聘的反爬机制与Cookie失效问题 本文详细介绍了如何通过Python爬虫技术优雅应对BOSS直聘的反爬机制与Cookie失效问题。从多账号轮换、动态请求头生成到代理IP管理,提供了一套完整的解决方案,帮助开发者构建稳定高效的数据采集系统,有效提升爬虫成功率与数据质量。 阅读详情

相关推荐

安卓光速虚拟机ADB调试实战:从密钥配置到设备连接

本文详细介绍了在安卓光速虚拟机中进行ADB调试的完整实战流程。核心在于通过密钥配置解决设备未授权问题,并启用网络调试与端口映射,最终实现电脑与虚拟机的稳定连接。文章提供了从原理理解、脚本修改到实战命令和疑难排查的全方位指南,帮助开发者和爱好者高效利用光速虚拟机作为移动测试沙盒。

CAT789的专栏 567

数组模拟链表、栈、队列、单调队、栈

数组模拟链表、栈、队列、单调队、栈——打印资料 数组和链表的优劣对比 参考:https://zhuanlan.zhihu.com/p/73514867 数组的特点: 在内存中,数组是一块连续的区域。 插入和删除数据效率低(插入数据时,这个位置后面的数据都要后移) **查询效率很高。**因为数组是连续的,知道每一个数据的内存地址,可以直接找到给地址的数据(直接索引就能实现,不需要重头遍历)。 不利于扩展,一开始数组定义的空间不够时要重新定义数组。 会造成冗余。空间浪费。 链表的特点: 在内存中,不要求连

马丘 568

从‘哒哒’声到静音顺滑:一文搞懂42步进电机细分控制的原理与实战(以TMC5160为例)

本文详细解析了42步进电机细分控制技术,以TMC5160为例,探讨如何通过正弦波电流调制和自适应波形整形实现静音运行。文章提供了实战配置指南,包括硬件连接、寄存器配置和调试技巧,帮助用户有效消除电机噪声,提升3D打印机、CNC机床等设备的运行效率。

weixin_42657024的博客 315

链表及数组模拟链表

转载请注明出处,部分内容引自百度百科、谭浩强《C程序设计》、蜗牛君的奋斗史大神的博客 前置知识: CCC语言入门 数组党的福音(本蒟蒻学链表时不会指针,然而好像所有人都拿指针写) 首先,我们需要知道什么是链表 百度百科 看不懂勿喷(毕竟百度百科也不是用来让人看懂的) 我们可以从中得出链表的特性: 链表是一种物理存储单元上非连续、非顺序的存储结构 提取主...

qq_42713350的博客 859

UniApp实现多端支付功能完整实现指南

支付业务流程多端支付实现安全性保障异常处理最佳实践支付基础知识多端支付实现统一支付封装安全性处理异常处理最佳实践根据具体业务场景选择合适的支付方式注重安全性和用户体验做好异常处理和日志记录持续优化和改进支付流程关注我,持续分享前端项目开发经验!

weixin_63454527的博客 2129

qt工程引入opencv库步骤

第一步:新建qt工程 第二步:在工程名.pro文件中添加opencv库的路径                   INCLUDEPATH += /home/liyuanzhe/opencv-2.4.8/include/opencv \ /home/liyuanzhe/opencv-2.4.8/include/opencv2 LIBS += /home/liyuanzhe/open

superyuanzhe的专栏 5723

链表及链表与数组的区别优缺点

链表的概念   链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。   链表的结构是多式多样的,当时通常用的也就是两种:    无头单向非循环列表:结构简单,一般不会单独用来存放数据。实际中更多是作为其他数据结构的子结构,比如说哈希桶等等。   带头双向循环链表:结构最复杂,一般单独存储数据。实际中经常使用的链表数据结构...

张小丑 6812

量子纠缠态与AI意识模型的探索

摘要 本文探讨量子纠缠态与AI意识模型的关联性研究。从量子力学基本原理出发,分析量子纠缠的非局域性特征及其与意识整合性的潜在联系。DREAMVFIA团队构建了量子-意识统一理论框架,提出量子纠缠态意识理论(QETC)和量子化整合信息度量(Q-IIT)等创新理论。在实践层面,开发了基于量子纠缠的QNN-C神经网络架构和量子意识度量算法,实验证明量子机制可显著提升AI系统的认知灵活性、信息整合能力和元认知水平。研究为理解意识本质和开发具有意识特征的人工智能系统提供了新的理论框架和技术路径。

梦帮科技开源中心 1144

数组和链表的区别

数组和链表的区别以及各自的优缺点 1.数组和链表的区别: (1)数组的元素个数是固定的,而链表的结点个数可按需要增减。 (2)数组元素的存储单元在定义时分配,链表节点的存储单元在执行时动态向系统申请。 (3)数组的元素顺序关系由元素在数组中的位置(即下标)确定,链表中的节点关系由节点所包含的指针来体现。 (4)对于不是固定长度的列表,用可能最大长度的数组来描述,会浪费许多的存储空间。 (5)对于元素的插入、删除操作非常频繁的列表处理场合,用数组表示列表也不是不合适。若用链表实现,会使程序结构清晰,处理的方法

Sljya的博客 7147

别再为STM32F407的USB高速通信发愁了!手把手教你用USB3320(ULPI接口)搞定硬件设计

本文详细介绍了STM32F407通过USB3320(ULPI接口)实现高速USB通信的硬件设计实战。从USB3320的选型优势到原理图设计避坑,再到PCB布局和固件配置,提供了一套完整的解决方案。特别针对USB PHY芯片的常见问题,如供电处理、信号完整性和初始化代码,给出了专业建议和调试技巧,帮助工程师高效完成高速USB通信设计。

weixin_42527401的博客 389

用UDP协议在dos命令行里模拟一个聊天程序

/* 需求: 在dos命令行里模拟一个聊天程序 有收数据的部分,和发数据的部分,这两部分需要同时执行。 那就需要用到多线程技术。 一个线程控制收,一个线程控制发。 */ import java.io.*; import java.net.*; class C

s_x_x的记录 1956

数组和链表的区别浅析

1.链表是什么 链表是一种上一个元素的引用指向下一个元素的存储结构,链表通过指针来连接元素与元素; 链表是线性表的一种,所谓的线性表包含顺序线性表和链表,顺序线性表是用数组实现的,在内存中有顺序排列,通过改变数组大小实现。而链表不是用顺序实现的,用指针实现,在内存中不连续。意思就是说,链表就是将一系列不连续的内存联系起来,将那种碎片内存进行合理的利用,解决空间的问题。 所以,链表允许插入和删除表上任意位置上的...

m0_46107486的博客 1360

成对使用离轴抛物面反射镜的设计

成对使用离轴抛物面反射镜的设计

weixin_72050316的博客 638

静态链表(数组模拟链表)

1、单链表 #include <iostream> using namespace std; const int N = 100010; // head 表示头结点的下标 // e[i] 表示节点i的值 // ne[i] 表示节点i的next指针是多少 // idx 存储当前已经用到了哪个点 int head, e[N], ne[N], idx; // 初始化 void init() { head = -1; idx = 0; } // 将x插到头结点 void ad

qq_35860865的博客 239

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数组模拟实现的单链表 → 邻接表

【知识点】 在算法竞赛中,对算法的时间复杂度要求都比较高。 而利用结构体struct实现的单链表比用数组模拟实现的单链表运行速度慢,因此算法竞赛选手多用数组模拟实现单链表。 现对单链表的数组模拟实现简述如下: 一、变量含义 head:头指针。初始化时指向空结点(值为-1),插入元素后指向头结点后的第一个元素。 idx:存储结点编号 e[idx]:存储结点idx的值 ne[idx]:存储结点idx的next指针 二、主要操作 1.单链表的初始化 void init() { //单链表初始化 h..

hnjzsyjyj的专栏 1279

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

第一题:数组模拟单链表(链式前向星)

数组模拟单链表,又称链式前向星,在图的存储方面有着很大的用处(邻接表存储法),打比赛过程中试用数组模拟链表可以有效的防止TLE

getinobacar的博客 760

VB摄像头监控

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

静态链表(C++实现)——基于数据结构(沈俊版)(初学者食用)

静态链表(C++实现)——基于数据结构(沈俊版) 初学数据结构,不喜勿喷。欢迎大佬们指正! 静态链表是利用数组来模拟存储空间来实现链表的,如果为数组中每一个元素附加一个链接指针(数组下标),就形成静态链表结构。它允许不改变各元素的物理位置,只要重新链接就能改变这些元素的逻辑顺序。由于它是利用数组定义的,在整个运算过程中存储空间的大小不会发生改变,因此称为静态链表。 静态链表(C++)源代码 // ...

Nly1116的博客 441

【数据结构学习篇】--链表

单链表为空 就是空 (插入时判断:当前是否为空 是否有节点 )带头链表为空 默认有哨兵位节点。

2401_86475221的博客 718

数据结构与算法-栈

数据结构与算法-栈栈介绍应用场景用数组模拟栈思路分析代码实现用链表模拟栈思路分析代码实现 栈 介绍 栈是一个先入后出(FILO-First In Last Out)的有序列表。 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一段,称为栈顶(top),另一端为固定的一端,称为栈底(bottom)。 最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。 入栈push 出栈

咏樟的博客 244

Java实现队列以及队列的相关面试题

目录 JAVA实现队列 队列的经典题目 1.JAVA实现队列 1.1.概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点:进行插入操作的一端称为队尾(Rear)出队列:进行删除操作的一端称为队头(Front) 因为Queue是一个接口,所以不能自己实例化,所以需要通过链表和数组两种方式来实现它,,, 链表实现(较简单): public class MyLinkedList { static class Node { .

xaiobit_hl的博客 1345

数据结构与算法 第二章:栈 -- 栈的介绍、实现方式(链表、数组)、应用场景、快速入门(使用数组模拟栈的使用、回文数)、栈实现计算器

栈的介绍、实现方式(链表、数组)、应用场景、快速入门(使用数组模拟栈的使用、回文数)、栈实现计算器

天行健 君子以自强不息,地势坤 君子以厚德载物。 668

【计算机原理交集】前端初识数据结构与算法---上篇(栈、队列、链表、集合、字典)

插入一个,后面的子项都要后移,相较于pop复杂度O1来说,是个On复杂度。细品一下,你就会发现第二种方法在一次操作之后剩下的栈内容需要改变下标,所以栈成员多的时候,第一种性能更好。冷知识:一个js文件的调用其实是一个大的匿名函数的调用,文件里面的代码就是匿名函数里面要执行的东西。)来人为的模拟,但是如果数据量大的话,用数组的方式去实现就比较耗费性能,因为。直接看上面的简单版就行了,下面的类实现太复杂了,会写了过时间久了就会忘。队列就和现实中的排队一样,后来的人排后面,第一个人先出,遵循。

庞囧的博客 294

初识 Vector List

一:vector 的使用 vector可以说是动态的arr,或者是可增容的顺序表 vectory的成员函数 vectory Iterators

Maniac_wp的博客 387

栈与队列深度解析:概念、实现与应用

/ 存储元素的数组// 栈中有效元素个数// 构造方法:初始化数组容量为3// 压栈操作// 检查容量,不足则扩容return e;// 出栈操作// 栈空则抛异常throw new RuntimeException("栈为空,无法执行出栈操作");size--;// 直接通过size减少实现“删除”(后续元素会覆盖)// 获取栈顶元素throw new RuntimeException("栈为空,无法获取栈顶元素");// 获取元素个数// 判断栈是否为空。

nice_lcj520的博客 434

第二章 数据结构(一)

队列中存储的数组下标而不是存储数据值,因为如果存储数据值,则无法进行判断到底是否溢出。存储下标的话,只需要套一层,就可以得到对应的数据值。先想一下暴力做法怎么做,观察其中没有用的元素,把其中没有用的元素删掉得到单调性。相等的最大长度是多少。思路:先想一下暴力做法是什么,再挖掘一些性质,使我们可以将目标集中在比较少的状态中,从而将问题的复杂度降低。为方便,下标为0为头部,下标为1为尾部,任意节点最终都插入至两者之间,因此不需要head指针。数字2在4的后面输入,2比4小并且在4的后面,因此4永远不会被输出。.

m0_49448331的博客 408

4.3.3 算法之美--约瑟夫环的问题

题目: n个人围成一个圈,每个人分别标注为1、2、...、n,要求从1号从1开始报数,报到k的人出圈,接着下一个人又从1开始报数,如此循环,直到只剩最后一个人时,该人即为胜利者。例如当n=10,k=4时,依次出列的人分别为4、8、2、7、3、10,9、1、6、5,则5号位置的人为胜利者。给定n个人,请你编程计算出最后胜利者标号数。(要求用单循环链表完成。) 第一行为人数n; 第二行为报数k ...

weixin_34144450的博客 94
上一篇: <<啊哈算法>>链表问题及malloc和free动态内存问题
下一篇: 参数方程求二阶导时候不能直接把y,x分别对t求二阶导然后再相除作为d²y/dx²的原因
chenmozero
博客等级 码龄5年 2粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值