单向链表的操作

C语言单向链表的基本操作     掌握结构体,指针后,链表作为两种形式的集合,将C语言的作用发挥到巨大。链表知识123链表是线性表,包括两个部分:数据域&指针域数据域:存储需要保存的数据指针域:各个节点之间的连接连续性:链表在逻辑上是连续的,但物理上未必连续链表主要有单向链表,双向链表,循环链表链表操作:对于链表的操作一般包括增加,删除,修改,查找下面对单向链表进行举例操作:操作环境:keil v4,串口软件,有硬... 阅读详情

       单向链表的操作,代码根据严蔚敏版<数据结构>进行编写,代码如下

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

typedef enum Status
{
    OK,
    ERROR,
} Status;

typedef int ElemType;

typedef struct LNode
{
    ElemType data;
    struct LNode *next;
} LNode,*LinkList;

void printf_L(const LinkList &L)
{
    LinkList p;
    p = L->next;
    if(L->next)
        while(p)
        {
            printf("%d ",p->data);
            p = p->next;
        }
    printf("\n");
}

Status GetElem_L(LinkList &L,int i,ElemType &e)
{
    LinkList p;
    int j = 1;
    p = L->next;
    while(p&&j<i)
    {
        p = p->next;
        ++j;
    }
    if(!p || j > i)
        return ERROR;
    e = p->data;
    printf("%d",e);
    return OK;
}

Status ListInsert_L(LinkList &L,int i,ElemType &e)
{
    LinkList p = L;
    int j = 0;
    while(p &&j< i - 1)
    {
        p = p->next;
        ++j;
    }
    if(!p || j > i - 1)
        return ERROR;
    LinkList s = (LinkList)malloc(sizeof(LNode));
    s->data = e;
    s->next = p->next;
    p->next = s;
    return OK;
}

Status ListDelete_L(LinkList &L,int i,ElemType &e)
{
    LinkList p = L;
    int j = 0;
    while(p->next && j < i - 1 )
    {
        p = p->next;
        ++j;
    }
    if(!(p->next) ||j > i -1)
        return ERROR;
    LinkList q;
    q = p->next;
    p->next = q->next;
    e = q->data;
    free(q);
    return OK;
}

void CreateList_L(LinkList &L,int n)
{
    L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;
    int i;
    for(i = n; i >0; --i)
    {
        LinkList p = (LinkList)malloc(sizeof(LNode));
        scanf("%d",&p->data);
        p->next = L->next;
        L->next = p;
    }
}

Status DestoryList(LinkList &L)
{
    LinkList p;
    if(!L)
      return ERROR;
    while(L)
    {
        p = L->next;
        free(L);
        L=p;
    }
    return OK;
}

void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc)
{
    LinkList pa = La->next;
    LinkList pb = Lb->next;
    LinkList pc;
    Lc = pc = La;
    while(pa && pb)
    {
        if(pa->data <= pb->data)
        {
            pc->next = pa;
            pc = pa;
            pa = pa->next;
        }
        else
        {
            pc->next = pb;
            pc = pb;
            pb = pb->next;
        }
    }
    pc->next = pa?pa:pb;
    free(Lb);
}

int main()
{
    LinkList La,Lb,Lc;
    CreateList_L(La,5);
    printf_L(La);
    CreateList_L(Lb,4);
    printf_L(Lb);
    MergeList_L(La,Lb,Lc);
    printf_L(Lc);
    DestoryList(Lc);
    return 0;
}

代码说明:需要用c++编译器进行编译,c编译器不支持引用类型。

C语言单向链表的各种操作 直接上代码了。// Link.cpp: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; //malloc函数 using namespace std; typedef int dataType; typedef struct ListNode { dataTy... 阅读详情

相关推荐

单向链表的创建和操作

单向链表的创建和基本操作

m0_67186846的博客 749

线性表的链式表示和实现----线性(单)链表

头文件 head.h #include #include #include /* malloc()等 */ #include /* INT_MAX等 */ #include /* EOF(=^Z或F6),NULL */ #include /* atoi() */ #include /* eof() */ #include /* floor(),ceil(),abs() */ #inclu

烽火前秦路 1382

单向链表及其操作实战指南

单向链表是一种常见的数据结构,它由一系列节点组成,每个节点都包含数据部分和指向下一个节点的指针。与数组相比,链表的动态性质使其在插入和删除操作上具有更高的效率,因为无需像数组那样进行数据的移动。在计算机科学中,数据结构是组织和存储数据的一种方式,以便可以高效地访问和修改。它涉及数据的逻辑和物理布局以及相关操作。数据结构可以分为线性结构和非线性结构。线性结构如数组和链表,每个元素最多与前一个和后一个元素相连。非线性结构如树和图,其元素之间的关系是多对多的。在面向对象编程中,节点类是链表实现的基础。

weixin_42591908的博客 688

单向链表及单向链表操作

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)

2401_84360682的博客 659

nacos3.1.0适配国产数据库

Nacos 3.1.0适配国产数据库指南 本文介绍了Nacos 3.1.0版本适配达梦数据库和人大金仓数据库的具体步骤。主要内容包括:添加达梦和人大金仓的JDBC驱动依赖,修改nacos-persistence模块的配置文件及相关Java类,以及打包和运行注意事项。文章特别指出3.1.0版本需要JDK17环境,并提供了解决常见问题的建议,如添加VM options配置和不同启动方式等。通过本文的配置指导,可以实现Nacos服务在国产数据库环境下的正常运行。

梦昼初的博客 1466

Maxwell个人初学经验及资料分享

前段时间学习了课题组基于Maxwell所建立的模型,因为以前从来没有使用过,只是按照一步一步记忆了操作,但总觉得不熟悉,我想是缺乏对这个软件整体的了解,真正想上手只会这一个模型也没有办法扩展。但是我感觉这些有限元分析软件学习起来应该有一些共性,基于以前对COMSOL学习的一点经验,我就在官网和其他网站找了一些学习资源构成一条基础入门之路,也可能有更好的资源,仅代表个人观点做一下分享。以上就是本人对该软件初步学习的一点理解,跟着这样的操作不到一个星期就能初步的掌握。...

怎么又是萝卜的博客 5631

单向链表的C语言实现与基本操作

本文的主要内容目录: 一、单向链表的C语言实现 二、单向链表的基本操作 一、单向链表的C语言实现 链表作为一种基本的数据结构在程序开发过程当中经常会使用到。对C语言来说链表的实现主要依靠结构体和指针,所以本文相关内容和程序需要有C语言当中指针和结构体的基础。 链表是一种线性存储数据的结构,存储内容在逻辑上连续的,在物理上却不一定连续。单向链表的组成包括一个链表头(head)和若干

TECH_PRO的博客 5万+

GEE开发之Landsat8计算MNDWI和数据分析

上一篇博客介绍了landsat8计算NDWI以及数据的获取,这次介绍MNDWI(改进的归一化差异水体指数)。

等待着冬天的风的博客 8440

单向链表操作

这两周做的两个项目都与链表操作有关,一开始接触链表的时候不是很理解,经过了两个项目的学习和琢磨对于链表的操作比以前理解的更透彻一点。 链表是链式存储的线性表。根据指针域的不同,链表分为单向链表、双向链表、循环链表。目前我只掌握了单向链表的原理和相关的操作,重点来说一下单向链表。 单向链表可以这样来理解,单向链表中的每个元素包含两个域,一个指针域,一个值域,这样的元素就是我们所说...

F154879的博客 239

SuccessFactors入门篇

SuccessFactors入门篇—— Employee Central(一)最近通过一个月左右的学习,拿到了SF EC(SuccessFactors Employee Central )模块SAP认证,所以打算把自己学习SF的整个过程以及相关资料和大家分享一下,相互切磋,共同进步。Employee Central简单了解Employee Central简单了解新的改变功能快捷键合理的创建标题,有...

qq_42288853的博客 1万+

FPGA加速SNN实现MNIST手写数字识别的实践与优化

脉冲神经网络(SNN)作为第三代神经网络模型,采用生物启发的脉冲事件驱动机制,在处理时序信号时具有天然能效优势。其核心原理是通过神经元仅在接收足够输入脉冲时激活的稀疏特性,大幅降低计算能耗。在FPGA硬件加速领域,SNN通过量化优化、硬件友好型神经元模型设计等关键技术,可在边缘计算场景实现超高能效比。本文以MNIST手写数字识别为案例,详细解析了从6bit量化策略到双缓冲流水线设计的完整优化路径,最终在Xilinx Kintex-7平台实现97.54%识别准确率的同时,功耗仅231mW,能效比达81,712

weixin_30417487的博客 529

单向链表的基本操作

链表通常是单向链表,它包含多个结点,每个结点有一个指向后继元素的next(下一个)指针。表中最后一个结点的next指针为NULL,表示该链表结束。 链表的类型声明: public class ListNode { private int data; private ListNode next; public ListNode(int data) { this.data = data; } public in...

weixin_52358343的博客 1024

天线学习笔记——串馈网络设计

工程中通常更倾向于使用50Ω、70.7Ω、100Ω的固定阻抗的带宽,实际中可以分别使用固定阻抗的带宽和计算得到的带宽进行仿真,观察二者的性能,取性能更优者即可。本系列是一个记录天线设计的笔记,分享出来也希望能够帮助到大家,后续本系列文章还会不定期更新,如有需要可关注,任何问题均可在评论区或私信提出,看到必回。如果对大家有帮助可进行打赏哦~

Ethan的博客 7878

单向链表,双向链表的操作

双向链表是一种链式数据结构,每个节点包含三个部分:数据域、指向前一个节点的指针(与单向链表相比,双向链表的优点在于可以在 O(1) 时间内访问前一个节点。初始化一个空的双向链表,通常用一个指向第一个节点的头指针。遍历并打印链表中的所有节点,从头到尾和从尾到头都可以进行。双向链表的删除操作可以是删除头节点、尾节点或任意节点。双向链表的插入操作可以在头部、尾部或中间位置进行。将链表反转,使每个节点的指针指向前一个节点。将新节点插入到链表的头部。将新节点插入到链表的尾部。删除链表中的某个指定节点。

a8687216的博客 748

GStreamer Plugin之Gst-nvdewarper

支持三种投影类型 NVDS_META_SURFACE_FISH_PUSHBROOM, NVDS_META_SURFACE_FISH_VERTCYL 和NVDS_META_SURFACE_PERSPECTIVE_PERSPECTIVE。关于每个平面的NvDewarperSurfaceMeta参数(projection_type, surface_index, and source_id)以及内存中有效的矫正平面(num_filled_surfaces)包含RGBA格式的一帧的缓存。矫正后的RGBA格式。

pvmsmfchcs的博客 367

Amazon SES 移出沙盒完整指南 & 高通过率模板

AWS SES沙盒模式转正式模式申请指南 申请正式模式需通过AWS审核,常见被拒原因包括邮件用途不清晰、缺少退订机制或发送量不合理。人工申诉需登录AWS Support Center提交服务限额提升请求,填写详细的公司信息、邮件用途及合规措施。 高通过率申诉模板需包含: 公司信息:名称、网址及与AWS的合作情况。 邮件规范:明确类型(交易/营销)、退订链接及退信处理机制。 发送计划:合理预估发送量,确保合规。 关键点:真实信息、用途清晰、退订机制完善、发送量合理。首次被拒可修改后重新提交。

xianyinsuifeng的博客 328

对单向链表的操作

简单单向链表的实现及操作: 链表的基本概念:所谓链表就好像是火车车厢一样,从火车头开始,每一届车厢之后都连着一节车厢。在这里,每一届车厢就相当于一个节点,每一个节点除了要保存自己的内容之外,还要保存下一个节点的引用。 代码块一: public class Node { private String content;//保存节点内容 private Node next;//保存下一个...

weixin_44127337的博客 174

Devexpress16.2.6破解工具

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

Python单向链表操作

Python单向链表操作

分享一点有用的知识 949

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

单向链表的相关操作

单向链表的插入,删除,修改,查询。 单向链表的插入 1>头插法 struct node *insert(struct node *phead) { struct node *pnew; pnew=(struct node *)malloc(sizeof(struct node)); printf("insert:"); scanf("%d",&pnew->data); ...

weixin_43970157的博客 283

java 单向链表的操作

java 单向链表的操作 今天复习了一下数据结构,参考了网上的一个例子,自己写了个单向链表的操作。以下附上代码供大家参考: /** * 链表节点 * @author yangchuxi * */public class Node {  public Object t;  publ

一个游戏开发者的专栏 1652

单向链表基本操作

struct list{ int data; struct list *next; }//节点定义 //创建一个节点 struct list *create_list() { return calloc(sizeof(struct list),1); } //遍历链表 void traverse_list(struct list *s) { struct list...

nospeakmoreact的博客 197

单向链表——JS实现链表的常见操作

链表的插入和删除操作时,时间复杂度可以达到O(1),但是访问慢只能从表头开始访问。 数组的查找快,可以直接通过下标访问,但是删除和插入数据效率低。 insert方法图解 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>LinkList...

u012183426的博客 235

单向链表的一些基本操作(Java)

链表是一种常见的数据结构,用于存储一系列元素。与数组不同,链表中的元素(节点)在内存中不必是连续的。每个节点包含数据部分和指向下一个节点的引用(指针)。链表的主要优点是插入和删除操作的时间复杂度为O(1),但访问特定元素的时间复杂度为O(n)。

2401_87935803的博客 964

关于《链表》(单向链表的简单操作·下)

承接上篇,本篇介绍单向链表的另外三种简单操作。

无须logic的博客 611
上一篇: 二分查找的实现
下一篇: xcode 6.3升级后插件失效问题解决
iam_lmk
博客等级 码龄16年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值