单链表的创建

c语言单链表的创建以及初始化 c语言单链表的创建及初始化 对于单链表还是很模糊的小盆友可以看看 在学或写单链表时,一定要分清楚" . "与 " -> "的区别: 点运算是结构体变量访问其成员的操作符 箭头运算是结构体指针访问其指向的成员变量的操作符 还有点运算的优先级比“ * ” 的高,所以在使用点运算时,一定要带括号,不然顺序会错的。 // 利用typedef struct 定义个结构体,用stu这个别名简化定义名 // 如果要用到链表存放学生个人信息,就需要修改好多部分 //本代码只是用于理解并实践单. 阅读详情
//创建链式线性表,采用逆位序输入
#include<iostream>
#include<stdlib.h> 
using namespace std;
typedef  struct LNode
	{
		int data;
		struct LNode *next;
	}LNode , *LinkList;     //*LinkList代表指向LNode节点的指针的类型名,定义指向LNode的指针时,LinkList 相当于 LNode*  

int main()
{
	LinkList m;
	LNode * CreateList_L(LinkList &L ,int n);  //声明
	LNode *p = CreateList_L(m , 6);
	while(p->next)
	{	p = p->next;  //while(p)时,p->next会出现越界,越界地址赋给p会中断 
		cout<<p->data<<"    ";
	
	}

}

LNode *  CreateList_L(LinkList &L , int n)
{
	//建立带头结点的单链线性表
	L = (LinkList)malloc(sizeof(LNode));
	L->next = NULL;  //建立一个带头结点的链表
	for(int i = n ; i>0 ; --i)
	{
		LNode *p = (LinkList)malloc(sizeof(LNode));  //生成新节点
		cout<<"输入第"<<n-i+1<<"个节点数据"<<endl;
		cin>>p->data;
		p->next = L->next;
		L->next = p;  //插入到表头
	}
	return L;
}

运行结果:


C语言--单链表的创建及使用详解 单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。每个节点只能访问其后继节点,而无法访问前驱节点。链表的头节点是第一个节点,尾节点是最后一个节点,尾节点的指针指向空值。 阅读详情

相关推荐

创建单链表

怎么用c语言创建一个单链表 什么是链表? 链表是一种物理存储单元上非连续、非顺序的存储结构。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 (需要一个头指针存储第一个节点) 怎么创建一个链表 创建链表涉及下面3步: 使用malloc() 为结构分配足够的空间 储存结构的地址; 把当...

lsengard的博客 841

王道数据结构第三章

//链栈操作实现——创增删查 typedef struct Lnode { Elemtype data; struct LNode *next; }stack; void add(stack *l,Elemtype x)//入栈 { LNode *h=l,*p; p->data=x; p->next=l->next; l->next=p; } bool St...

qq_42712462的博客 338

四种创建单链表的方法

学习了这么久的数据结构,终于把链表吃透啦,下面是我整理的四种创建单链表的的方法,以及一些非常容易犯的错误,让我们一起来看看吧~

AIGC 1万+

单链表的建立

一、顺序建立链表(尾插法) 1、首先建立一个只需头结点的空链表,此时头指针、尾指针均指向头结点 head=(struct node*)malloc(sizeof(struct node)); head->next=NULL; 2、在头结点后插入第一个节点 p=(struct node*)malloc(sizeof(struct node)); scanf("%d",&p->data); p->next=NULL; tail=head; tail->next..

m0_69300400的博客 1万+

大模型训练中的AllReduce:从原理到实战,如何优化你的分布式训练效率

本文深入解析了大模型分布式训练的核心通信操作AllReduce,特别是高效的Ring All-Reduce算法原理。文章从实战角度出发,探讨了如何通过通信计算重叠、梯度累积策略、NCCL库调优以及混合并行通信优化等手段,有效降低通信开销,从而显著提升大模型训练效率。

julia4scientist的博客 524

雷达气象学(8)——反射率因子图实战(强对流预警篇)

本文聚焦雷达反射率因子图在强对流预警中的实战应用,深入解析了柱状回波、有界弱回波区(BWER)、三体散射(TBSS)等关键回波结构特征,这些是识别超级单体风暴和大冰雹的核心“身份证”。文章强调从静态识别转向动态追踪与多源数据综合研判的思维转变,并提供了系统的实战分析流程与常见误区避坑指南,旨在提升对强对流天气的短临预警能力。

weixin_29213827的博客 485

建立单链表

链表是动态地进行存储分配的一种结构,链表中的数据在内存中不必连续存放,数据之间通过指针链接起来,相比于数组结构,链表的插入和删除操作比较方便。单链表的建立链表:通过自引用结构的指针域,将各结点相互连接。关于链表的基本概念: (1)链表的第一个结点称头指针或头结点,它指向链表在内存中的首地址, (2)其后的结点是通过结点中的链节指针成员访问的。 (3)链表的最后一个结点称为尾节点。尾节点的指针域通常被设置成NULL。 (4)链表中的每一个结点是在需要的时候建立的。 (5)各结点在内存中的存储地址不一

Dream_begin_的博客 5880

3D视觉引导技术在机器人焊接中的应用

通过对比传统的2D视觉和3D视觉技术在焊接领域的应用差异,探讨了3D视觉引导技术在提高焊接精度、适应不规则工件形状和增强自适应能力方面的优势。本文对3D视觉引导技术在机器人焊接中的应用进行了深入探讨,总结了其在提高焊接精度、适应不规则工件形状和增强自适应能力方面的优势,并通过应用案例展示了其在焊接路径规划、焊缝检测和焊接质量控制等方面的重要作用。1. 提高焊接精度:3D视觉引导技术能够精确测量焊接工件的三维形状和位置,为机器人提供精准的焊接路径规划和跟踪,从而提高焊接精度。三、3D视觉引导技术概述。

2302_79273122的博客 1835

单链表创建

@[TOC]单链表的创建与插入 单链表的创建与操作 链表作为基本的数据结构,学习好链表的创建与操作是数据结构入门的基础。 (小白make for myself) 单链表的创建 typedef struct Node { int data; struct Node* next; }Node;//结构体创建,也可以使用*Node取址 Node* initList() { Node* L = (Node*)malloc(sizeof(Node));//动态分配存储单元 L -&gt

weixin_45875973的博客 5706

VTK实战笔记(1)在win11搭建VTK-9.4.2 + qt5.15.2 + VS2019_x64开发环境

Visual Studio 2019 + qt5.15.2 + vtk9.4.2

心向阳光,斗志昂扬! 972

从0到1,快速理清 | DeepSeek Harness

DeepSeek推出自研Harness开发平台,主打"一切皆插件"理念,将AI执行能力模块化为可自由组合的插件体系。带你从0到1,快速了解开发链路。

IT学习博客 672

单链表的创建算法

单链表的创建算法        当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表。        单链表的示意图如下:                                                   Head指针为单链表的头指针,单链表L:L既是单链表的名字,也是其头指针。链表中的最后一个结点的指针域定义为空指针(NULL)。       单链表

火雨(Nick) 5万+

stm32h743的hrtim使用生成pwm波

HRTIM(High-Resolution Timer)是一种高精度定时器,其时钟频率可直接与CPU主频同步,达到480MHz。相比之下,其他传统定时器需挂载在APB总线上,受总线频率限制,最高仅支持240MHz。这种直接时钟同步机制显著提升了定时器的分辨率和精度。

d13211322的博客 1610

创建单链表并输出单链表

创建一个单链表并输出单链表 ①基本思路: 定义一个结构体,包含数据域和指针域,前者为该结点保存的用户数据,后者为该结点保存的下一个相邻结点的地址。 定义一个结点创建函数(返回head),用head指向第一个结点、p1开辟新节点、p2连接新节点。 定义一个结点输出函数,用do…while形式依次打印出每一个结构体成员数据域。 在main()函数中,依次调用上述函数。 ②源代码: /* 创建一个单链表,每个结点包含三个元素,学生编号、分数、保存下一个节点地址的指针 */ #include <stdio

图灵动力的博客 6194

EtherCAT主站SOEM -- 19 --Qt-Soem通过CSP模式(周期同步位置模式)控制一个电机转圈圈

以上就是EtherCAT主站SOEM – 19 --Qt-Soem通过CSP模式(周期同步位置模式)控制一个电机转圈圈的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 1994

SAP Group Reporting入门指南(8)--业务操作

关于资产负债表类的匹配,系统预设了SGR01和SGR02两个方法,主要区别在于数据的来源范围,SGR01取自ACDOCA和ACDOCU,如果是0F类型的就会直接显示日记账分录(期间是000的除外,这类凭证是年结结转的,系统不再跨年追溯),如果是其他类型就显示合并分录。这里是我觉得SAP还需要优化的地方。基于ICMR的抵消任务中通常将抵销差异细分为交易差异、货币换算差异和其他差异,这在基于重分类抵消任务是无法实现的,基于重分类抵消只知道一个差异总额,很难从合并抵消凭证看出差异的来源,也没有审计线索可言。

bflyfish的博客 275

C++实现单链表的创建

单链表的定义 typedef struct linkList{ int data; struct linkList* next; }LNode; 单链表通常可以分为带头结点和不带头结点的单链表,二者的区别如下图所示 从上图可以直观地看到,带头结点的单链表相较于不带头结点的单链表在空间上会额外浪费一个结点。但是在引入头结点后,可以带来两个优点: ① 在处理第一个位置上的结点时,因为头结点的缘故,其处理方式和其他位置的结点操作一致,不需要进行特殊处理。 ② 无论链表是否为空,其头指针都指

weixin_46393892的博客 3921

WINCC7.3破解文件

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

单链表的创建,遍历

单链表的创建,遍历 结构体和主函数 #include <iostream> using namespace std; typedef struct node { int data;//数据 struct node *next;//指针 } node,*list;//定义一个结构体 保存链表 int main() { void creatlist(list &L,i...

lian_xiu的博客 2036

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Devexpress16.2.6破解工具

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

单链表创建的两种方式

单链表创建的两种方式 导语:在前面的博客中我们分别介绍了单链表的反转实现以及单链表插入的实现,都是基于单链表创建之后的操作,本片博客将介绍如何创建单链表或者说是单链表创建的两种方式。 创建单链表 单链表就是一种特殊的结构体组合而成的数据结构,关于单链表的创建方式有很多种,大同小异。在这里我们将详细的介绍一下头插法创建链表和尾插法创建链表。 ...

Thinkao 的博客 3409

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

单链表的创建--从零开始

上学期临近期末的时候用Word写了一篇链表详解,今天突然想到自己一直在搞算法题,很长时间没有用链表了。试着在纸上写了几步,发现回想起来竟然有些吃力,这里把上学期写的链表详解贴上来mark一下,顺便以此作为数据结构笔记的第一篇。 学习链表需要了解的基本知识点: 首先,想要熟练使用链表,就要知道两大类基本知识点: 1. 指针 2.结构体 (如果对两个知识点有疑惑请百度一下,没有什么问题是百...

cprimesplus的博客 9万+

C语言创建两个递增单链表,并合并成递增单链表

创建两个递增单链表,并合并成递增单链表 实现要求: (1)任意顺序输入5个整数,按有序插入的要求生成两个有序单链表,将该链表输出显示。 (2)将这两个有序单链表使用两个单链表的原有空间进行合并,合并成一个有序单链表,将生成的有序单链表输出显示。 实现方法 首先定义单链表的结构 typedef struct node{ //单链表的结构定义 int data; //数据域 struct node *next; //指针域 }node,*LinkList;

weixin_44512370的博客 1万+

单链表的创建插入删除

单链表的创建,插入,删除 1、 以正序或逆序方式动态创建一个单链表,输入数据并验证是否成功; 2、 在原有单链表的基础上,实现在指定位置上对某个数据元素的插入,其中插入位置不限(可以是表头、表尾,也可以是其中的任何一个位置),但要求在有效范围内,输入数据并验证是否成功;3、 在原有单链表的基础上,实现删除指定位置上的某个数据元素,返回删除的数据元素值,其中删除位置不限,但要求在有效范围内,输入数据并验证是否删除成功;4、 查找单链表中第i个元素的值。5、 输出单链表中所有元素的值。 代码如下: #

m0_55769200的博客 2466

单链表创建之--头插法创建带头结点的单链表

单链表--头插法创建带头结点的单链表

m0_67176533的博客 1万+

【单链表】C语言:数组创建单链表;键盘输入数值创建单链表

使用结构体定义单链表节点 typedef struct Node * pNode; struct Node { int Data; pNode Next;//结构的递归定义 等效于注释代码 // struct Node * Next; }; 主函数 #include <stdio.h> #define NUM 6 //用于指定数组大小 pNode ...

进一寸有一寸的欢喜 8480

c语言单链表的创建,头插法,尾插法

单链表的创建有两种方式:头插法和尾插法。 这两种方法最大的区别在于对输入数据的存储方式不同,头插是逆序,尾插是顺序,尾插较于符合大多数人的习惯。但理解头插法对于理解单链表的插入和删除操作会有很大的帮助。 不论是哪种方法,了解其创建原理理清思路是十分重要的一步,代码其次。 对于一个单链表来说,分为有头节点的单链表和无头节点的单链表,头结点中不含数据域,头指针指向头结点;而无头节点的单链表中第一个节点...

优快云GuoYuying的博客 1万+
上一篇: 单链表的创建
下一篇: 括号配对检查
libingbojava
博客等级 码龄9年 64粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值