[I0A]链表-单链表

单链表操作之合并两个单链表 ***单链表操作之合并两个单链表*** /*  本篇博客为合并两个单链表, 有序和无序都可以; 其中用到单链表的尾插和单链表的选择排序; @单链表排序之选择排序链接:http://blog.youkuaiyun.com/bitboss/article/details/51602544; 代码中大部分操作都在单链表基本操作详解中介绍过,这里就直接上代码; */ 阅读详情

链表,分为单链表,双链表,循环链表。只要掌握基本的单链表后面两种非常轻松就可以解决。

什么是单链表?

链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

┌───┬───┐             ┌───┬───┐             ┌───┬───┐
│data │next │---> │data │next │--->│data │next │
└───┴───┘             └───┴───┘             └───┴───┘

data域--存放结点值的数据域
next域--存放结点的直接后继的地址(位置)的指针域(链域)


typedef struct node node;

struct node{
    int element;
    node* next;
};

typedef struct {
    node *head;
    int size;
}linked_list;


这是一个包含单链表的基本定义。

单链表的创建:

linked_list create_list(){
    node* n = create_node(INT_MIN);
    linked_list list = {n,0};
    return list;
}


node* create_node(int element){
    node* n = malloc(sizeof(node));
    n->element = element;
    n->next = NULL;
    return n;
}

这是一个包含空头结点的单链表,之所以包含空头结点 是为了简化操作。


主要讲解,单链表的删除和插入过程,因为该两种过程是所有操作的基础。

删除:


插入:








#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

typedef struct node node;

struct node{
    int element;
    node* next;
};

typedef struct {
    node *head;
    int size;
}linked_list;

node*
create_node(int element);

linked_list
create_list();

void
append(linked_list* list,int element);

node*
search(linked_list list,int element);

void
sort(linked_list* list);

void
print_list(linked_list list);

void
menu();

void
list_test();

void
clear_list(linked_list* list);

void 
delete(linked_list* list,int element);

node* 
find_less_than(linked_list list,int element);

int main(int argc,char** argv){
    list_test();
    return 0;
}

void delete(linked_list* list,int element){
	node *ptr = search(*list,element);
	//node *ptr = list->head;
    //while(ptr->next && ptr->next->element != element) ptr = ptr->next;
    if(ptr->next){
    	node* tmp = ptr->next;
    	ptr->next = ptr->next->next;
    	free(tmp);
    	list->size--;
    }
}

void clear_list(linked_list* list){
    node *n = list->head;
    while(n){
        list->head = n->next;
        free(n);
        n = list->head;
    }
    
}

void list_test(){
    linked_list list = create_list();
    int element,choice;
    while(1){
        menu();
        print_list(list);
        printf("input choice:");
        scanf("%d",&choice);
        switch(choice) {
            case 1:{printf("input number:");scanf("%d",&element);append(&list,element);break;}
            case 2:{printf("input number:");scanf("%d",&element);node *n = search(list,element);if(n->next) printf("element exists\n");break;}
            case 3:{sort(&list);break;}
            case 4:{printf("input number:");scanf("%d",&element);delete(&list,element);break;}
            case 5:{clear_list(&list);exit(0);}
            default:break;
        }
        getchar();
    }
}

node* find_less_than(linked_list list,int element){
	node *ptr = list.head;
	while(ptr->next && ptr->next->element < element) ptr = ptr->next;
	return ptr;
}

void menu(){
    system("clear");
    printf("Linked List Test\n");
    printf("1.append\n");
    printf("2.search\n");
    printf("3.sort\n");
    printf("4.delete\n");
    printf("5.exit\n");
}

void print_list(linked_list list){
    node* n = list.head->next;
    while(n){
        printf("%d\t",n->element);
        n = n->next;
    }
    printf("\n");
}

void sort(linked_list *list){
    node *ptr = list->head->next;
    list->head->next = NULL;
    while(ptr){
        node* n = ptr;
        node *tmp = find_less_than(*list,n->element);
        ptr = ptr->next;
        n->next = tmp->next;
        tmp->next = n;
    }
}


node* search(linked_list list,int element){
    node *ptr = list.head;
    while(ptr->next && ptr->next->element != element) ptr = ptr->next;
    return ptr;
}

void append(linked_list* list,int element){
    node *ptr = list->head;
    while(ptr->next!=NULL) ptr = ptr->next;
    ptr->next = create_node(element);
    list->size++;
}


linked_list create_list(){
    node* n = create_node(INT_MIN);
    linked_list list = {n,0};
    return list;
}


node* create_node(int element){
    node* n = malloc(sizeof(node));
    n->element = element;
    n->next = NULL;
    return n;
}



删去单链表中第i个节点的操作。删除单链表中数据域为x的前驱元素。数据结构。 如何删除单链表中第i个节点? 先来看看删除的原理:因为数据结构是单链表,要想删除第i个节点,就要找到第i个节点;要想找到第i个节点,就要找到第i-1个节点;要想找到第i-1个节点,就要找到第i-2个节点......于是就要从第一个节点开始找起,一直找到第i-1个节点。如何找?让一个指针从头结点开始移动,一直移动到第i-1个节点为止。这个过程中可以用一个变量j从0开始计数,一直自增到i-1。 阅读详情

相关推荐

【数据结构】-单链表-将一个单链表奇偶位置节点原地拆分成两个单链表

L=a1,b1,a2,b2,....an,bn 返回值:a1,a2,a3,.....an 原始单链表:b1,b2,b3..bn LinkList split(LinkList &L) { //分成的两个单链表一个是返回值M,另一个在原始单链表L中 LNode *p = L->next; LNode *q = p->next; LinkList M = (LinkList)malloc(sizeof(LNode)); M->next = ..

vector的博客 3592

【单链表】单链表的就地逆置

编写算法实现带头结点单链表seqlist的就地逆置,即利用原带头结点单链表seqlist的结点空间,把数据元素顺序排反 题目分析:   在前面2-18讲了顺序表的就地逆置,但单链表的就地逆置与顺序表有所不同,因为顺序表可以根据下标值直接快速的找到对应的数据,而单链表只能从头结点一个一个的遍历才能找到相应数据元素,所以逆置单链表不采用第一个结点和最后一个结点交换的方式。那怎么做呢?   既然都讲到这里了,咱就先来讨论讨论单链表的两种建立方式————头插法和尾插法 利用尾插法建立的单链表数

chaim16的博客 1万+

GPT Researcher 的win docker安装攻略

github网址是:https://github.com/assafelovic/gpt-researcher/blob/master/README-zh_CN.md。使用 Docker 运行 AI-Researcher 项目的。因为docker安装方法不够清晰,因此写一个使用方法。打开设置——docker engine ,增加代码。如有其他问题,可提供错误截图或日志进一步排查!

weixin_43818488的博客 1123

单链表的实现

#include using namespace std; template class linklist { public: linklist();//建立n个元素的单链表 linklist(DataType a[],int n)// ~linklist();//析构函数 int length();//求单链表的长度 datatype Get(int i);//按位查找,查找第i个结点的元素值 int locate(datatype x);//按值查找,查找值为x的元素序号 void insert(in

Never__Forget的博客 341

在Proteus中用80C51模拟4线SPI点亮OLED屏幕

在Proteus里用80C51模拟4线SPI控制OLED屏幕使其显示图案(汇编实现)。

Connor3093的博客 5002

【Python&RS】哨兵2号(Sentinel2)轨道条带说明+图幅统计(表格+矢量)

今天给大家带来哨兵2号的图幅编号介绍以及全国省、市所需图幅数的统计。网上教程极少,而且结果也不公开。因为每次下载的时候都不知道需要几幅,所以研究后给大家分享一下。

Remote Sensing迷途小书童 1679

单链表的创建

先上代码 #include <stdio.h> #include <stdlib.h> struct Node { int date; struct Node* next; }; struct Node* creat_link(struct Node *head) { head = (struct Node*)malloc(sizeof(struct Node)); head->next = NULL;//头结点不动 struct ...

weixin_63519743的博客 633

给新人的储能系统入门图解:从电芯到EMS,一张图看懂BESS里那些‘黑话’

本文通过视觉化拆解储能系统,从电芯到EMS详细解析BESS中的关键组件和行业术语。涵盖电芯参数、模组组装、PCS功能、BMS与EMS分工,以及SOC、DOD等关键运维参数,帮助新人快速理解储能系统的核心技术和应用场景。

weixin_42522964的博客 592

数据结构之 线性表---单链表操作A (删除链表中的指定元素)

数据结构上机测试2-1:单链表操作A Time Limit: 1000MS Memory limit: 4096K 题目描述 输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。分别输出建立的初始单链表和完成删除后的单链表。 输入 第一行输入数据个数n; 第二行依次输入n个整数; 第三行输入欲删除数据m。 输出...

weixin_30410999的博客 238

ENVI+SARscape实战:从哨兵一号数据到地震形变制图全流程解析

本文详细解析了使用ENVI和SARscape软件从哨兵一号数据生成地震形变图的全流程,包括数据获取、干涉处理、相位解缠等关键步骤。通过实战技巧和参数设置建议,帮助用户高效处理SAR数据,提升地震形变监测的精度和可视化效果。

weixin_30460489的博客 385

树莓派 SPI操作

扩展板配备一款0.96inch,128864分辨率的oled显示屏,通过SPI控制,先上显示效果图。由于程序过长,在这里我就不把代码全部贴出来了,只是简单讲解一下spi的操作函数。管脚如下如所有,左边方框的管脚分别为MOSI MISO SCLK,左边CE0,CE1为两个片选管脚,分别对应上图中的spidev0.0,spidev0.1两个设备。下载spidev库,复制到树莓派,并行运行如下命令解压安装。spi设备,此处设备为/dev/spi-decv0.0。在/dev路径下面,我们可以发现两个spi设备。

weixin_46529898的博客 914

删除单链表中第i个节点

单链表的删除操作是将单链表的第i个节点删去。具体步骤如下:  (1)找到节点ai-1的存储位置p,因为在单链表中节点ai的存储地址是在其直接前趋节点ai-1的指针域next中;  (2)令p-&gt;next指向ai的直接后继节点ai+1;  (3)释放节点ai的空间;  #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef s...

chen_zan_yu_的博客 1万+

Shopee App加密算法逆向实战:从libshpssdk.so到x-sap-ri的生成机制

本文详细解析了Shopee App核心加密参数x-sap-ri的生成机制。通过逆向分析libshpssdk.so动态库,揭示了其采用9套算法动态切换的复杂签名逻辑,并分享了从抓包定位、Frida动态调试到Unidbg模拟执行的全过程实战经验,为移动应用安全研究提供了完整的技术路径。

weixin_29323551的博客 1327

单链表尾插法详解

单链表尾插法详解 首先,我们知道单链表的存储结构为: typedef struct LNode{ ElemType data;//数据域 struct LNode *next;//指针域,指向下一个结点 }LNode,*Linklist; //*LinkList是指向LNode这个结构的一个指针,可以去定义变量,定义出来的是指向这个结构的指针变量 其中,LNode *p和Linklist p是等价的; *p可以理解为一个LNode结构体,p则是一个指向LNode结构的指针,可以用->运算符来访问结

Sss1mple的博客 1万+

【2025最新版】间接平差——以水准网平差为例 (python详细过程版)

水准网间接平差的python代码实现。博客长期更新,本文最新更新时间为:2025年5月20日。

点云侠的博客 1702

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

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

将两个单链表合并为一个单链表

#include &lt;stdio.h&gt; #include &lt;malloc.h&gt; typedef char ElemType; typedef struct LNode {     ElemType data; //数据域     struct LNode *next; //指向后继结点 }LinkNode; // 声明单链表结点类型 /*-----------------...

xiezhi123456的博客 1万+

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

单链表的删除第i个元素

单链表的删除 删除操作图示 a2的节点q,要实现q的删除,就是让他的前继节点p绕过a2直接指向后继节点a3。 p->next=p->next->next; 单链表第i个数据删除结点的算法思路: 1.声明结点p指向链表第一个结点,初始化j=1; 2.当j<i时,就遍历链表,让P的指针向后移动,不断指向下一个结点,j累加1; 3.若到链表末尾p为空,则说明第i个元素不存...

weixin_42050661的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++单链表

链表是一种常见的数据结构。它主要是利用动态内存分配、结合结构体并配合指针来实现的,能根据需要开辟和释放内存单元。

weixin_62313265的博客 5842

单链表

一、基本概念 带头结点和不带头结点的单链表 带头结点的单链表,头指针head指向头结点,头结点的值域不包含任何信息,从头结点之后的结点开始存储信息。 头指针head不等于NULL,head->next等于NULL时,链表为空。 单链表结点定义 typedef struct LNode{ int data; //data存放结点数据域 stru...

weixin_40805072的博客 4653

数据结构——单链表

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 ​

2301_77179941的博客 4802

单链表的应用-合并两升序单链表,得降序单链表

单链表应用、合并两有序单链表、单链表就地逆置

weixin_54186646的博客 5350

单链表-单链表A拆分为A(偶)和C(奇) (尾插法建表)

题意: 有一个整数元素建立的单链表A,设计一个算法,将其拆分成两个链表A 和B,使得链表A中含有所有偶数的结点,B链表中含有所有的奇数结点。且保持原来的相对次序。 单链表的存储结构: typedef struct LinkList{ int data; LinkList * next; } 分析: 这里采用新建链表的方法,而题意要求保持相对次序,所以这里采用尾插法建立单链表。 这里可以用原来的单链表A的头结点作为新链表的头结点。所有不用再生成一个新头结点。 思路:

muyu_muyu的博客 4042

示例:利用单链表的基本运算 ,求A-B。即若单链表B中的元素出现在单链表A中,则从A中删除该元素

题目:利用单链表的基本运算 ,求A-B。即若单链表B中的元素出现在单链表A中,则从A中删除该元素 分析:对于单链表A中的每个元素e,在单链表B中进行查找,如果在B中存在与A中相同的元素,则将元素从A中删除 算法实现 /** 算法描述:*/ /** A-B算法的实现 */ void DeleteElement(LinkList A, LinkList B) { int position; DataType e; ListNode *p; /** 取出链表B中的每个元素与单链表

zzuli-ycz的博客 473

C语言——单链表

一,链表的定义 链表是一种常见的采用动态存储分配方式的数据结构。在链表中,有一个头指针变量,用这个指针保存一个地址,头指针指向一个变量,这个变量称为元素。链表中,每一个元素包括两部分:数据部分和指针部分。数据部分用来存放元素中包含的数据,指针部分用来指向下一个元素 。(最后一个元素指向NULL) 在链表中,第一个结点前虚假一个头结点,头指针指向头结点,头结点的指针域指向第一个实际有效结点,该节点可以称为首元结点。 确定一个链表需要一个参数:头指针,通过头指针可以推算出链表其他所有的参数 二,单链表

qq_62755767的博客 5806

单链表(带头结点)的删除

题目描述1.问题描述给出初始数据,实现单链表的定义、创建、查找和删除。假设单链表中的结点计数从1开始。2.算法单链表结点的存储结构包含两部分:数据、下一结点指针。单链表的创建:依次为输入的数据分配结点,并按序链接起来。单链表的查找:给出位置i,若第i个结点存在(1&lt;=i&lt;=表中结点数L),返回结点地址;否则,返回NULL。单链表的删除:给出位置i,删除第i个结点(1&lt;=i&lt;...

zzzzhdx的博客 9966

手搓单链表

链表和顺序表都是线性表,都是数据结构中重要的部分,今天来看的单链表是很多高级结构的子部分,所以学好单链表有助于我们后期的提升。有一个或多个存放数据的结构体成员,还有一个指向下一个节点的指针。用来存储我们使用的数据。用来存储下一个节点的地址。

2301_76986069的博客 576
上一篇: [I0A]排序算法综合实例
下一篇: [Spring]Method Injection
HeapStackk
博客等级 码龄12年 11粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值