共用体与枚举法,链表的学习

这篇具有很好参考价值的文章主要介绍了共用体与枚举法,链表的学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

结构体注意事项:

1.结构体类型可以定义在main函数里面,但是此时的作用域就被限定在该函数中
2.结构体的的的定义的形式:a.先定义类型,后定义变量-----struct stu s
   b.定义类型的同时,定义了变量:struct stu {......}s;
   c.省略了结构体名字(只用一次的时候可以这样写):struct    {.....}s;


一,共用体

union  共用体名
{
        成员列表;
};

目的:节省空间。所有自定义的数据共用一块空间,大小由最大的那个类型所占的字节决定。

注意:1.共用体的初始化只能给一个值,默认给到第一个变量
           2.共用体成员变量辅助:共用体用的数据最终存储的 --- 应该是最后一次给到的值。
  但是只能影响到 自己数据类型对应的空间中的数据。
           3.共用体类型可以是函数参数,也可以是返回值的类型:共用体,结构体类型定义出来之后   a.定义变量 ; b.定义数组 ; c.定义指针  ;  d.做函数参数,返回值类型 

           4.可以判断大小端

共用体与枚举法,链表的学习,算法,数据结构,c语言,arm,linux,前端,运维

           5.共用体的大小  --是成员变量中最大的那个成员的大小
           6.实际用途  a.节省空间   b.进行数据转换


二,枚举

概念:如果一个变量只有几种可能的值,则可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。

eg:若从键盘输入1~7代表星期的英文名称
        enum weekday
      {
              sun,         ------ 写的是名字()
              mon,
              wed,
              thu,
              fri,
              sat,
      };

注意: 1.枚举提高了代码的可读性
            2.枚举的本质是int型,与整型兼容
            3.枚举的不足:本质上是个整型类型,所以枚举的类型并不能真正限制在指定的范围内
            4.枚举类型 可以做函数 形参 和 返回值 , 定义数组也可以,本质上就是整型数据


三,链表 

数据结构:数据的组织形式(逻辑上理解的形式)
eg:数组---连续性,有序性,单一性 
优点:有下标就能随机访问任意元素,便捷性
缺点:拓展数据不方便,删除数据也不方便

数据的组织形式 -- - -- 会决定使用数据的算法

链表是链式的数据表
优点:增加 删除数据很方便
缺点:找数据不大方便

计算机中如何体现链式结构数据:
存放链式数据的结构:节点   【数据 |  另外一个节点的指针】
eg:[数据1|指针]   [数据2指针]    [数据3|指针]

操作:
1.创建一个链表     ---    空链表 //有头链表  --可以更方便的处理链表 //无头链表 
      空链表的特点:只有头节点,并且头节点的指针域 为NULL //相当于是尾节点

2.插入

尾插:思路:
    s1.创建一个新的节点
       struct Node *pNew = malloc(sizeof(struct Node)); 
       //放在了堆区 
       //
     s2.找到尾节点 
       struct Node *p = &head;  //此时p在头节点 
       while( p->next != NULL )
       {
          p = p->next; //让p指向下一个节点 
       }
     s3.链接到尾节点后面
      p->next  = pNew;    
      pNew->next = NULL; //尾节点 

代码实现:

共用体与枚举法,链表的学习,算法,数据结构,c语言,arm,linux,前端,运维

头插: 思路:

int length(struct Node *head)
   {
      //统计有效节点的个数 
   }
   
    //头插 
    
   void pushFront(struc Node *head,int data)
   {
      //1.创建新节点
      pNew 
      //2.链接 
      pNew->next = p->next;
      p->next = pNew;
   }

代码实现:

共用体与枚举法,链表的学习,算法,数据结构,c语言,arm,linux,前端,运维

链表的插入本质(自我总结):
尾部插入:指针指到唯一可以得到的头节点,拿到指针域的地址,得到下一个链表存放的位置,重复不断地找链表成员,然后找到next为NULL的尾节点为止。然后将next为NULL的换成新链表的地址,将新链表的next改为   NULL。
头部插入:新节点的next要先和首节点连接也就是头节点next存放的地址,此时在把新节点的地址给到头节点中。此时新节点又做为了首节点。文章来源地址https://www.toymoban.com/news/detail-836285.html

到了这里,关于共用体与枚举法,链表的学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言:自定义类型(结构体、位段、共用体、枚举)】

    C语言已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的, 假设我想描述学生,描述⼀本书,这时单⼀的内置类型是不⾏的。描述⼀个学生需要名字、年龄、学号、身高、体重等;描述⼀本书需要作者、出版社、定价等。C语言为

    2024年02月05日
    浏览(43)
  • Java 算法篇-链表的经典算法:有序链表去重、合并多个有序链表

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍         文章目录          1.0 链表的说明          2.0 有序链表去重的实现方式         2.1 有序链表去重(保留重复的节点) - 使用递归来实现         2.2 有序链表去重(保留重复的节点) - 使用双指针

    2024年02月05日
    浏览(46)
  • 【算法入门&链表】【模板】链表|反转链表|合并排序链表|删除链表的节点

    ✅作者简介:热爱后端语言的大学生,CSDN内容合伙人 ✨精品专栏:C++面向对象 🔥系列专栏:算法百炼成神 本专栏收录的均为牛客网的算法题目,内含链表、双指针、递归、动态规划、基本数据结构等算法思想的具体运用。牛客网不仅有大量的经典算法题目,也有大厂的面

    2024年02月17日
    浏览(60)
  • [算法通关村] 1.2 链表的插入

    上一节我们谈到了链表的概念,以及链表的创建方法,忘记的小伙伴可以复习一下: [算法通关村] 1.1 单向链表的创建         今天我们来探究一下链表的插入,链表的插入共有 3 种可能性,分别是在链表的 头部 插入、在 中间 插入,和在链表的 尾部 插入(追加),不同

    2024年02月15日
    浏览(42)
  • 编程导航算法第一关 |链表的基础

    今天也是算法通关村刚开始,学习了链表。 首先,链表是一种最基本的结构,我们通常在收到一个链表的时候只有一个指向链表头的指针head,因为链表就是通过头指针来寻找其他结点的。 链表中的每个结点都存在它的数据和指向下一个节点的指针。 在遍历链表中,我们只需

    2024年02月15日
    浏览(38)
  • 算法刷题-链表-删除链表的倒数第N个节点

    力扣题目链接 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] 双指针的经典应用,

    2024年02月08日
    浏览(44)
  • [算法通关村] 1.1 单向链表的创建

    各位读者朋友们, 从今天开始,我将通过博文的形式,概述数据结构中应知必会的基本算法, 由于我更加熟悉 Java 语言,所以全程使用 Java 语言进行叙述, 如果您发现了文章中的错误,请您不吝赐教。         “链表”(Linked List)是一种常见的数据结构,用于存储和组

    2024年02月16日
    浏览(37)
  • 环形链表的学习

    2024年02月06日
    浏览(35)
  • 算法竞赛基础:C++双向链表的结构和实现(普通链表、List、静态链表)

    本文将会介绍在算法竞赛中双向链表的几种使用方式,适合有一定基础的人阅读。 一般来说,普通的链表结构是这样的: next指针指向下一个链表,这样的结构只能够支持单向查询。 双向链表,顾名思义,就是可以支持双向的访问和查询。 也就是这样的: 这种链表为访问前

    2024年01月24日
    浏览(42)
  • 【数据结构和算法】删除链表的中间节点

    Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、复杂度分析 这是力扣的 2095 题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙的一种。 慢慢开始链表的模块了

    2024年01月19日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包