ABAP学习笔记之——第五章:内表

news2025/3/1 0:56:25

内表:

内表是可以在程序内部定义且使用的表,属于本地表。

与C语言比较:

C语言的数组和内表比较:

内表是动态数组(Dynamic Data Object)

INITIALSIZE 语句并非实际占用内存空间,而只是预约(RESERVE)内存空间。

 创建内表:

参照局部表类型创建内表

        首先定义结构体类型,然后参照此结构体类型定义内表类型,最后再参照此内表的类型定义内表。

参照全局表类型创建内表:

例:

*参照局部表类型创建内表
TYPES: BEGIN OF s_type,"定义结构体参数类型
         no(6)    TYPE c,
         name(10) TYPE c,
         part(16) TYPE c,
       END OF s_type.

DATA gt_itab TYPE STANDARD TABLE OF s_type
      WITH NON-UNIQUE KEY no " 指定no字段唯一
      WITH HEADER LINE.  " 用了该语法以后,itab即是一个内表,又是一个与该内表结构相同的工作区
gt_itab-no = '0001'.
gt_itab-name = 'enjoy abap'.
gt_itab-part = 'sap team'.
APPEND gt_itab.

LOOP AT gt_itab.
  WRITE : gt_itab-no,gt_itab-name,gt_itab-part.
ENDLOOP.

*参照全局表定义内表
DATA gt_itab TYPE SORTED TABLE OF scarr WITH UNIQUE KEY carrid.
DATA gs_itab LIKE LINE OF gt_itab.

SELECT * INTO TABLE gt_itab FROM scarr.
LOOP AT gt_itab INTO gs_itab.
  WRITE: / gs_itab-carrid,gs_itab-carrname.
ENDLOOP.

 内表与表头

        比较内表循环语句中带表头的内表与不带表头的内表的使用方法。使用不带表头的内表时,需通过工作区 (Work Area)编辑内表中的数据,而使用带表头的内表时,则可以直接用表的名字编辑内表值。 

使用modify时:

 使用read时:

汇总:

例:

*带表头和不带表头的用法区别
*带表头
TYPES:BEGIN OF t_str,
        col1 TYPE i,
        col2 TYPE i,
      END OF t_str.
DATA gt_itab TYPE TABLE OF t_str WITH HEADER LINE."代表头的gt_itab内表

DO 3 TIMES.
  gt_itab-col1 = sy-index.
  gt_itab-col2 = sy-index ** 2.
  APPEND gt_itab.
ENDDO.

LOOP AT gt_itab.
  WRITE: / gt_itab-col1,gt_itab-col2.
ENDLOOP.

*不带表头
TYPES:BEGIN OF t_str,
        col1 TYPE i,
        col2 TYPE i,
      END OF t_str.
DATA gt_itab TYPE TABLE OF t_str.  "定义无表头的内表gt_itab
DATA gs_str LIKE LINE OF gt_itab.   "根据内表定义结构体作为工作区输出数据

DO 3 TIMES.
  gs_str-col1 = sy-index.
  gs_str-col2 = sy-index ** 2.
  APPEND gs_str TO gt_itab.       "向内表追加数据
ENDDO.

LOOP AT gt_itab INTO gs_str.        "需要借助gs_str结构体输出内表
  WRITE : / gs_str-col1,gs_str-col2.
ENDLOOP.

内表的类型:

标准表

        标准表是有顺次索引的树型结构内表,是利用索引查找内表行数据时易于使用的内表类型。使用 READ、MODIFY 及DELETE 语句时也会使用索引。标准表的关键字并非唯一,即标准表中不能使用 WITHUNIOUE 语句。

例:

*标准表
*1定义结构体类型
TYPES:BEGIN OF t_line,
        field1 TYPE c LENGTH 5,
        field2 TYPE c LENGTH 4,
        field3 TYPE i,
      END OF t_line.
**2定义标准表类型
TYPES t_tab TYPE STANDARD TABLE OF t_line WITH NON-UNIQUE DEFAULT KEY.  "default key将内表中以char类型定义的前几个字段设为关键字
**3定义内表
DATA gt_itab TYPE t_tab WITH HEADER LINE.

gt_itab-field1 = 'enjoy'.
gt_itab-field2 = 'abap'.
gt_itab-field3 = 1.
APPEND gt_itab.     "因为定义了表头,所以这里不添加到内表也行,应为上面就是直接赋值给内表。

READ TABLE gt_itab INDEX 1.
WRITE : / gt_itab-field1,gt_itab-field2,gt_itab-field3.

排序表

        标准表与排序表是索引表。其中排序表是已经按关键字排序好的内表类型。即当程序员需要保存一直以关键字排序好的结果时使用此类型。与标准表相同,其拥有索引,可以用索引或关键字查询对应的行。排序表与标准表的另一个不同点为 Uniqueness。排序表定义关键字时,可使用 WITHUNIQUE 语句,而标准表只能使用 WITH NON-UNIQUE 语句。排序表自带 BINARYSEARCH功能,因此表行数据与检索速度成反比。定义排序表时,务必明确指定 Unique/Non-unique。表已经排序,因此使用 Sort 命令会发生错误。

例:

*排序表
*1定义结构体类型
TYPES:BEGIN OF t_line,
        col TYPE c,
        seq TYPE i,
      END OF t_line.
**2定义排序表类型
TYPES t_tab TYPE SORTED TABLE OF t_line WITH UNIQUE KEY col.
**3定义内表类型
DATA gt_itab TYPE t_tab WITH HEADER LINE.

gt_itab-col = 'B'.
gt_itab-seq = 1.
INSERT TABLE gt_itab.   "若使用append会发生排序问题‘“Dump Error”

gt_itab-col = 'A'.
gt_itab-seq = 2.
INSERT TABLE gt_itab.

CLEAR gt_itab.      "清空的是表头的数据
READ TABLE gt_itab INDEX 2.
WRITE : / gt_itab-col,gt_itab-seq.

哈希表

        哈希表没有顺次索引,只能用哈希值计算出的 Key 值进行检索。检索速度与内表的数据无关,始终是相同的。哈希值用于直接读取哈希算法算出的内存地址中存储的数据。哈希表定要设定为 Unique 形式。

        哈希表的内表不存在索引,因此不能使用 READ TABLE~INDEX 语句。需使用 READ TABLE~WITHTABLE KEY或WITH KEY 语,才能访问内表数据。

例:

*哈希表(一定要设成UNIQUE形式)
**1定义结构体
TYPES:BEGIN OF t_line,
        col TYPE c,
        seq TYPE i,
      END OF t_line.
**2定义哈希表类型
TYPES t_tab TYPE HASHED TABLE OF t_line WITH UNIQUE KEY col.
**3定义内表
DATA gt_itab TYPE t_tab WITH HEADER LINE.

gt_itab-col = 'B'.
gt_itab-seq = 1.
INSERT TABLE gt_itab.

gt_itab-col = 'A'.
gt_itab-seq = 2.
INSERT TABLE gt_itab.

CLEAR gt_itab.
READ TABLE gt_itab WITH TABLE KEY col ='A'.
WRITE : / gt_itab-col,gt_itab-seq.

 比较内表执行速度

 二分查找:

二分查找再不同类型的内表的查询速度:

 测试哈希表速度:

内表命令:

内表赋值:

内表与其他变量一样,也可用 MOVE 语句进行赋值。要注意的是带表头的内表以下面的的方法赋值时只会复制表头中的数据。

带表头的内表表头与内表的名字相同。使用符号“D”区分表头与表体。中括号“[]”指的是带表头内表的表体。即带表头的内表名字指表头,不带表头的内表名字指表体。因此,在例题中根据是否带表头的情况,分别使用了 MOVE gt_itabll TO gt_itab2 语句。

例:

*内表赋值
TYPES:BEGIN OF t_line,
  col1 TYPE i,
  col2 TYPE i,
  END OF t_line.
DATA: gt_itab1 TYPE STANDARD TABLE OF t_line WITH HEADER LINE,
      gt_itab2 TYPE STANDARD TABLE OF t_line,
      gs_wa like LINE OF gt_itab2.
DO 5 TIMES.
  gt_itab1-col1 = sy-index.
  gt_itab1-col2 = sy-index ** 2.
  insert TABLE gt_itab1.
ENDDO.

move gt_itab1[] to gt_itab2."[]指的是代表头内表的表体

LOOP AT gt_itab2 into gs_wa.
  WRITE : / gs_wa-col1,gs_wa-col2.
ENDLOOP.

内表初始化:

带表头和不带表头的区别:

例:

*内表初始化
DATA:BEGIN OF gs_line,
  col1 TYPE i,
  col2 TYPE c,
  END OF gs_line.
DATA: gt_itab like STANDARD TABLE OF gs_line.
gs_line-col1 = 1.
gs_line-col2 = 'A'.
insert gs_line into TABLE gt_itab.

REFRESH gt_itab.  "情况表内数据,但无法释放空间
*free gt_itab.     "释放空间
*clear gt_itab.  "清空表体

IF gt_itab is INITIAL.  "如果gt_itab被初始化了,就执行下面的语句
  WRITE : 'Internal table have no data.'.
  free gt_itab.     "初始化后删除内存空间
ENDIF.

Clear:

返回(Release)内存空间。但不删除刚开始要求的内存容量信息。如果是带表头的内表,则下面语句只删除内表的表头。而不带表头的内表删除的是表体。

REFRESH :

语句只删除表内数据,无法删除内存空间,若想释放内存空间需使用FREE 语句。

综上所述,CLEAR 语句删除内表数据的同时释放了内存空间,相反 REFRESH 语句只能删除内表数据。若使用了 REFRESH 语句,则有必要使用 FREE 语句释放内存。

内表排序

作用在标准表和哈希表上:

例:

*内表排序
DATA:BEGIN OF gs_line,
       col1 TYPE c,
       col2 TYPE i,
     END OF gs_line.
DATA gt_itab LIKE STANDARD TABLE OF gs_line WITH NON-UNIQUE KEY col1.

gs_line-col1 = 'B'.
gs_line-col2 = 3.
APPEND gs_line TO gt_itab.

gs_line-col1 = 'C'.
gs_line-col2 = 4.
APPEND gs_line TO gt_itab.

gs_line-col1 = 'A'.
gs_line-col2 = 2.
APPEND gs_line TO gt_itab.

gs_line-col1 = 'A'.
gs_line-col2 = 1.
APPEND gs_line TO gt_itab.

SORT gt_itab.
PERFORM write_data.

SORT gt_itab BY col1 col2.
PERFORM write_data.

SORT gt_itab BY col1 DESCENDING col2 ASCENDING.
PERFORM write_data.

FORM write_data.
  LOOP AT gt_itab INTO gs_line.
    WRITE: / gs_line-col1,gs_line-col2.
  ENDLOOP.
  ULINE.
ENDFORM.

指定字段:

内表属性:

LINES 返回内表包含的数据件数,OCCURS 返回内表的初始大小。另外,KIND 返回内表的类型,其中 T代表标准表,S 代表排序表, 代表哈希表。在这几种内表属性选项中最常用的是 LINES。

例:

*内表属性
DATA:BEGIN OF gs_line,
       col1 TYPE c,
       col2 TYPE i,
     END OF gs_line.
DATA gt_itab LIKE STANDARD TABLE OF gs_line INITIAL SIZE 10.
DATA: gv_line TYPE i.

DO 20 TIMES.
  gs_line-col1 = sy-index.
  gs_line-col2 = sy-index * 2.
  INSERT gs_line INTO TABLE gt_itab.
ENDDO.

DESCRIBE TABLE gt_itab LINES gv_line. "lines返回内表包含的数据件数
WRITE: / 'internal table line is :',gv_line.

 追加数据

利用insert

可利用 INSERT 语追加多条数据,但是 Itab1 与Itab2 表类型要相同。

例:

*利用insert追加数据
data:begin of gs_line,
       col1 type c,
       col2 type i,
     end of gs_line.
DATA gt_itab1 LIKE STANDARD TABLE OF gs_line
      WITH NON-UNIQUE KEY col1.
DATA gt_itab2 LIKE SORTED TABLE OF gs_line
      WITH NON-UNIQUE KEY col1.

gs_line-col1 = 'B'.
gs_line-col2 = 1.
INSERT gs_line INTO TABLE gt_itab1.

gs_line-col1 = 'A'.
gs_line-col2 = 2.
INSERT gs_line INTO TABLE gt_itab1.

gs_line-col1 = 'C'.
gs_line-col2 = 3.
INSERT gs_line INTO TABLE gt_itab1.

*INSERT LINES OF gt_itab1 INTO TABLE gt_itab2.
INSERT LINES OF gt_itab1 FROM 1 TO 2 INTO TABLE gt_itab2.  "下标从一开始

LOOP AT gt_itab2 INTO gs_line.
  WRITE: / gs_line-col1,gs_line-col2.
ENDLOOP.
********************************************************************************

*利用append追加数据
data:begin of gs_line,
       col1 type c,
       col2 type i,
     end of gs_line.
DATA gt_itab LIKE STANDARD TABLE OF gs_line
      WITH NON-UNIQUE KEY col1.
DATA gt_temp LIKE STANDARD TABLE OF gs_line WITH NON-UNIQUE KEY col1.

gs_line-col1 = 'B'.
gs_line-col2 = 1.
APPEND gs_line TO gt_itab.

gs_line-col1 = 'A'.
gs_line-col2 = 2.
APPEND gs_line TO gt_itab.

gs_line-col1 = 'A'.
gs_line-col2 = 3.
APPEND gs_line TO gt_itab.

gs_line-col1 = 'C'.
gs_line-col2 = 4.
APPEND gs_line TO gt_itab.

APPEND LINES OF gt_itab TO gt_temp.
APPEND LINES OF gt_itab FROM 1 TO 2 TO gt_temp.

LOOP AT gt_temp INTO gs_line.
  WRITE : / gs_line-col1,gs_line-col2.
ENDLOOP.

**********************************************************
*append initial line 创建一个空表后追加数据
DATA:BEGIN OF gs_line,
       col1 TYPE c,
       col2 TYPE i,
     END OF gs_line.
DATA gt_itab LIKE TABLE OF gs_line INITIAL SIZE 2.

gs_line-col1 = 'C'.
gs_line-col2 = 1.
APPEND gs_line to gt_itab SORTED BY col1.

gs_line-col1 = 'A'.
gs_line-col2 = 2.
APPEND gs_line to gt_itab SORTED BY col1.

gs_line-col1 = 'B'.
gs_line-col2 = 3.
APPEND gs_line to gt_itab SORTED BY col1.

LOOP AT gt_itab into gs_line.
  WRITE: / gs_line-col1,gs_line-col2.
ENDLOOP.

利用索引追加

利用Index 语句可以在 Index 指定的位置追加一条数据。此方法不适用于哈希表。语句执行成功,系统变量 SY-SUBRC 返回0,同时系统变量 SY-TABIX 返回索引值。

不同内表追加数据:

标准表

-追加数据到内表最后一行。

与APPEND语句有相同的效果

排序表

按照内表排序好的顺序追加数据。

若是关键字并非唯一(Non-UNIOUE KEY)的类型,重复的数据会追加到相同数据的上行中。

-哈希表

按照表关键字的哈希索引顺序追加数据

Append:

语法与insert一致

不同内表追加数据:

标准表

将数据追加到内表最后一行

可以利用 SORTED BY 选项,以关键字为基准按照降序(DESCENDING)进行排序

排序表

排序表是有序表,需按照排好的顺序追加数据,否则会发生 Dump Error。

哈希表

-不能使用 APPEND 语句。

APPEND INITIAL LINE

使用SORTED BY 语,会自动以字段f为基准降序(DESCENDING)排序后追加数据此语句只适用于标准表,另外还需用 INITIAL SIZE 语指定大小。

Collect:

使用 COLLECT 语句可以合计内表中数字类型的字段。

除了关键字以外的数据都需要是数字类型(f、i、p)。执行 COLLECT 语句,当存在相同关键字的数据时,合计数字类型的字段,不存在相同关键字的数据时,直接追加数据。不存在关键字的内表,则会把 CHAR 类型的字段作为关键字执行相同的操作。内表中若存在以CHAR 类型的 carrid 与 connid为基准的相同数据,则会以关键字作为基准合计数字类型的字段 seatsmax 值。

例:

*COLLECT语句
DATA:BEGIN OF gs_line,
       col1(3) TYPE c,
       col2(2) TYPE n,
       col3    TYPE i,
     END OF gs_line.
DATA gt_itab LIKE STANDARD TABLE OF gs_line
      WITH NON-UNIQUE KEY col1 col2.

gs_line-col1 = 'AA'.
gs_line-col2 = '17'.
gs_line-col3 = 660.
COLLECT gs_line INTO gt_itab.

gs_line-col1 = 'AL'.
gs_line-col2 = '34'.
gs_line-col3 = 220.
COLLECT gs_line INTO gt_itab.

gs_line-col1 = 'AA'.
gs_line-col2 = '17'.
gs_line-col3 = 280.
COLLECT gs_line INTO gt_itab.

LOOP AT  gt_itab INTO gs_line.
  WRITE: / gs_line-col1,gs_line-col2,gs_line-col3.
ENDLOOP.

 修改内表数据:

Modify

利用如下语句,即以关键字为基准修改内表行数据。内表关键字并非唯一,即存在重复数据时,执行 MODIFY 语句会修改第一条数据。

例:

*修改内表数据MODIFY
DATA:BEGIN OF gs_line,
       carrid   TYPE sflight-carrid,
       carrname TYPE scarr-carrname,
       fldate   TYPE sflight-fldate,
     END OF gs_line.
DATA gt_itab LIKE TABLE OF gs_line.

SELECT carrid connid INTO CORRESPONDING FIELDS OF TABLE gt_itab
  FROM sflight.
LOOP AT gt_itab INTO gs_line.
  AT NEW carrid.
    SELECT SINGLE carrname INTO gs_line-carrname
      FROM scarr WHERE carrid = gs_line-carrid.
    MODIFY gt_itab FROM gs_line INDEX sy-tabix TRANSPORTING carrname.
  ENDAT.
  WRITE: / gs_line-carrid,gs_line-carrname.
ENDLOOP.

Where:

 

索引:

利用索引可以修改对应行的值。因为使用索引,所以只能用于标准表与排序表。在 LOOP语句中可以省略INDEX 选项,此时会修改内表当前索引行数据。

删除数据(与修改数据类似,不再演示)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/38955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python每日一练 06

Python每日一练 06 文章目录Python每日一练 06while循环实例一、斐波那契数列前n项实例二、Leibniz公式计算圆周率while循环 循环结构表示程序重复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。 在问题求解过程中,…

[算法笔记]最长递增子序列和编辑距离

最长递增子序列 例如对于 a[] {2,1,5,3,6,4,8,9,7}其最长递增子序列为{1,3,4,8,9}所以长度(或者说是结果)为5。 对于a[0...n-1],用dp[i]表示a[0...i]中以a[i]结尾的最长递增子序列长度 其状态状态方程: dp[i]1 // 0≤i≤…

【无人机通信优化】基于粒子群算法的多跳无线网络部署优化附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

[附源码]SSM计算机毕业设计时事资讯平台JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Date对象

文章目录Date日期对象Date对象的创建格式化日期3.获取Date总的毫秒数(时间戳),是距离1970年1月1日过了多少毫秒数。二:常用时间获取方法三:日期设置方法四:时间转字符串菜鸟工具:https://www.runoob.com/jsref/jsref-o…

在Express框架使用ORM模型访问关系型数据库

一、ORM模型:设计思想,主要目的是简化计算机程序访问数据库 1、ORM:对象关系模型(对象关系映射) Object Releastion Model,将程序中的对象和数据库中关系(表格)进行映射。可以使开发者在程序中方便的对数据库进行操作(用户在程序操作对对象实…

【网页制作课作业】用HTML+CSS制作一个简单的学校网页(9页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

一文熟悉 Go 的分支结构(if - else-if - else、switch)

哈喽大家好,我是陈明勇,今天分享的知识是 Go 的分支结构。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出&a…

Python爬虫脚本+XML解析实现自动保存某商城的商品图

文章目录 1.背景介绍2.代码分析2.1.创建图片保存的目录2.2.定一下载函数2.3.发送请求解析数据2.源代码(全)1.背景介绍 Python脚本可以实现数据的爬取,而XML可以解析网页数据。将Python爬虫脚本与XML解析功能相结合,可以实现自动保存某商城的商品图功能。 注:本功能仅用于…

基于AlexNet卷积神经网络的手写体数字识别系统研究-附Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、手写体数字识别系统✳️ 2.1 MNIST 数据集✳️ 2.2 CNN✳️ 2.3 网络训练✳️ 三、手写体数字识别结果✳️ 四、参考文献✳️ 五、Matlab代码获取✳️ 一、引言 手写数字识别是计算机视觉领域中的一个重要应用,已广泛应用在很…

电动汽车充电站的最优选址matlab程序

​摘要:以规划期内充电站的总成本 (包括投资、运行和维护成本)和网损费用之和最小为目标,考虑了相关的约束条件,构造了电动汽车充电站最优规划的数学模型, 关键词:电动汽车;充电站&a…

角色扮演?一款跨平台可移植开源游戏

程序员宝藏库:gitee.com/sharetech_lee/CS-Books-Store DevWeekly收集整理每周优质开发者内容,包括开源项目、资源工具、技术文章等方面。 每周五定期发布,同步更新到 知乎:Jackpop 。 欢迎大家投稿,提交issue&#…

支付系统设计概览

前言 就个人对支付的一些理解和经验,在此编辑出来和大家一起交流分享。请大佬多多指正。 在各种互联网场景中,牵扯到交易的情况,大多都需要支付系统的支持。支付系统往往不是一蹴而就的,往往都是随着业务的不断扩展,…

【python】面向对象程序设计(基础篇)

个人主页:天寒雨落的博客_CSDN博客-初学者入门C语言,python,数据库领域博主 💬 热门专栏:python_天寒雨落的博客-CSDN博客 ​每日赠语:没有窘迫的失败,就不会有自豪的成功;失败不可怕,只要能从失…

浅识vue的虚拟DOM和渲染器

虚拟DOM本质上是对DOM的抽象描述,就是一个普通的js对象。他身上的属性要比真实DOM的属性要少得多。 在一定情况下,使用虚拟DOM的性能要逊于直接使用真实DOM。 例如,在页面一开始的时候,Vue需要先通过生成虚拟DOM树,在…

【雷达通信】雷达探测项目仿真附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

《恋上数据结构与算法》第1季:链表原理实现(图文并茂)

数据结构与算法的学习笔记目录:《恋上数据结构与算法》的学习笔记 目录索引链表原理实现一、链表二、链表的设计三、链表的接口设计四、链表接口的实现1. 索引越界的判断2. 根据索引查找指定节点3. 添加数据4. 插入元素5. 删除元素6. 清空元素7. 修改元素8. 查找元素…

傻白入门芯片设计,RDL/Interposer/EMIB/TSV(三)

目录 一、再分配层(RDL) 二、硅中介层(Si Interposer):Active and Passive 三、嵌入式硅桥(EMIB) 四、硅通孔 TSV(Through Silicon Vias) 一、再分配层(R…

CCF CSP认证2022年6月 归一化处理、寻宝!大冒险!、光线追踪

这是我第一次参加了这次CSP考试,300分,写了124三题,模拟题到现在都没看过题面没看,笑,t4写成模拟加数据结构,200行,因为一个小错误调了1h,错失了大好机会。考试环境的VSC配置的字体太…

[一篇读懂]C语言十讲:单链表的新建、查找

[一篇读懂]C语言十讲:单链表的新建、查找1. 与408关联解析及本节内容介绍1 与408关联解析2 本节内容介绍2. 头插法新建链表实战3. 尾插法新建链表实战4. 按位置查找及按值查找实战5. 往第i个位置插入元素实战6. 链表的调试方法总结234561. 与408关联解析及本节内容介…