数据结构与算法 c语言,数组是一种数据结构吗为什么,数据结构与算法 c语言,数组是一种数据结构吗对吗

  数据结构与算法 c语言,数组是一种数据结构吗为什么,数据结构与算法 c语言,数组是一种数据结构吗对吗

  【C语言数据结构】:数组本质上只是编译器在内存空间切割出来的【一系列内存】。

  数组的[变量]其实就是这一系列内存空间的[第一个元素的内存地址]。

  所以rxdyb在给编译器展示数组的时候,并没有像人一样看到数组的全貌。他只看到数组的第一个元素,并且知道它的内存地址。

  【蒙着眼睛看这句话?没什么大问题!那就看看吧]

  一、定义数组一般数组的定义很简单。仅此而已。

  int numList[10];您可以定义一个具有10个空间大小的整数数组,其中可以存储10个整数元素。

  当定义未初始化时,就可以理解为什么没有了,是空的。拿着包,好像里面什么都没有。

  1.【知识拓展】对数组的理解。毕竟数组也是你学C语言的时候学的,所以我们再学数据结构的时候一定要深入。

  当然,上面的例子不是很恰当。也许这个例子更好:

  你们学校开会,【第一排座位】规定只能给【指导老师】坐。

  这个【第一排座位】可以理解为这个【排列】。【10座】的按【长度10】排列,【领袖】就是这个【int类型】。

  如果这还不能理解…那…看视频就明白了【手动狗头】

  2.【知识扩展】数组的初始元素当然可以理解为空。

  然而,它不是空的。它由数组长度的空闲内存地址组成(上面的数组是10)。好吧,请不要相信。打印我是真是假。

  # include stdio . hint main((inta[10];for(intI=0;i10I ) {printf(%d\n ,a[I]);}看到这里,有些Java玩家可能会受不了。明明没有定义,你却打印出来报错!

  通过:Java需要定义和声明

  但是可以吗?显然不是。有些元素

  打印结果:

  199781873401447673468642376420000594199952044 Ni,序列类型强制为——带着问题学知识——

  如何得到目标值?为什么下标从0开始?为什么数组强制类型?————————————

  [p1]如何获得目标值?我们知道数组实际上是在内存空间中打开的一个连续的内存地址,编译器只有数组第一个元素的内存地址。

  [下标]实际上是操作数组中第一个元素的内存地址。添加[下标]得到[which]元素。

  假设第一个数组元素的内存地址是00000001,数组变量是[a](数组是整数),[a[0]]实际上是把内存地址[0]作为第一个元素的内存地址。

  另一方面,这个数组是一个整数数组,整数类型在内存中占用4个字节,所以需要表示为第二个元素获取第二个元素的内存地址,获取第二个元素。

  数组显示的地址与数组第一个元素的地址相同。

  # includesdio . hint main(int argc,char const *argv[] () inta )={ 1,2,3,4 };//a数组printf(内存地址a(内存地址p(na )0) p),a,a)0);0;}执行结果:

  A的内存地址0061FEC0a[0] p2]的下标为什么从0开始?看了上面的问题,你一定也意识到了这个问题。

  数组内存实际上是第一个元素的内存,下标计算需要加上内存地址,所以必须从0开始。

  [p3]为什么数组需要强制?看看刚才的公式。从[A [1]=] (000001) 1 * 4)转换为以下公式:

  数组第一个元素的内存地址(内存中下标* type消耗的字节数)))))))))))))))))))。

  所以数组强制类型。

  在C语言中,这个内存地址可以通过[]直接获得。如果你有兴趣,你可以用这个符号来操作数组。

  例如:

  # include stdio . hint main((inta[10];for(intI=0;i10I () printf(%p(n),)a[I]);}打印并自己检查数组的内存地址,判断是否相邻,是否相邻4

  执行结果:

  01 FEA 4061 FEA 80061 feac 0061 feb 0061 feb 40061 feb 80061 feb 061 feb 061 FEC 0061 FEC 0061 FEC 0061 FEC 40061 FEC 8 III。使用加法和变更检查数组的操作。

  其实增加的也是未初始化的时候,而不是长度的增加。

  使用数组时,永远不要记住数组的长度。不要超过数组的长度,否则会出现错误。

  1.添加遍历赋值的操作

  # include stdio . hint main(){ int a[10];for(int I=0;i10I){ a[I]=I;Printf(元素的内存地址:% p \ n \元素的值:%d\n ,(a[i]),a[I]);}}运行结果:将0-9的值放入数组。

  元素的内存地址:0061 FEA 4:0:0061 FEA 8:1:0061 feac:2:0061 feb 0:3:0061 feb 4:4:0061 feb 8:5值:6元素内存地址:0061 fc 0-元素值:7元素内存地址:0061 FEC 4-元素值:8元素内存地址:0061 FEC 8-元素值:9 2。变化是因为在定义时,数组不是空的,而且还有元素。当我们执行操作时,我们将替换原始值。这个变化是一样的原理。

  3.通过下标查找元素。

  # include stdio . hint main(){ int a[10];for(int I=0;i10I){ a[I]=I;Printf(元素的内存地址:% p \ n元素的值:%d\n\n ,(a[i]),a[I]);}}再来说说其他和数组相关的算法,比如二进制枚举,双指针,三进制枚举……

  四、练习编程,最忌讳的就是只看不练,动一动做做一些题。

  P1阵列串联给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有 0 = i n 的 i ,满足下述所有要求:

  ans[i] == nums[i]ans[i + n] == nums[i]具体而言,ans 由两个 nums 数组 串联 形成。

  返回数组 ans 。

  资料来源:LeetCode

  链接:https://leetcode-cn.com/problems/concatenation-of-array

  版权归领网所有。商业转载请联系官方授权,非商业转载请注明出处。

  P2基于排列构建数组给你一个 从 0 开始的排列 nums(下标也从 0 开始)。请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 = i nums.length),都满足 ans[i] = nums[nums[i]] 。返回构建好的数组 ans 。

  从 0 开始的排列 nums 是一个由 0 到 nums.length - 1(0 和 nums.length - 1 也包含在内)的不同整数组成的数组。

  资料来源:LeetCode

  链接:https://leetcode-cn.com/problems/build-array-from-permutation

  版权归领网所有。商业转载请联系官方授权,非商业转载请注明出处。

  操作后的P3变量值存在一种仅支持 4 种操作和 1 个变量 X 的编程语言:

  ++X 和 X++ 使变量 X 的值 加 1X 和 X-- 使变量 X 的值 减 1最初,X 的值是 0

  给你一个字符串数组 operations ,这是由操作组成的一个列表,返回执行所有操作后, X 的 最终值 。

  资料来源:LeetCode

  链接:3359 leet code-cn . com/problems/final-value-of-variable-after-performing-operations

  版权归领网所有。商业转载请联系官方授权,非商业转载请注明出处。

  关注下方微信官方账号,获取更多福利-python基础教程-python知识脑图-Python入门100例-C语言数据结构教程-C语言算法100问

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • mysql复合索引和组合索引,mysql组合索引数据结构
  • mysql复合索引和组合索引,mysql组合索引数据结构,Mysql之组合索引方法详解
  • mysql复合索引和组合索引,mysql复合索引数据结构
  • mysql复合索引和组合索引,mysql复合索引数据结构,MySQL的复合索引总结
  • b+树 多路搜索树,数据结构中树的分类
  • b+树 多路搜索树,数据结构中树的分类,数据结构-树(三):多路搜索树B树、B+树
  • avl树的构造,avl树特性,数据结构之AVL树详解
  • 数据结构c语言哈夫曼树,c语言哈夫曼树的构造,使用C语言详解霍夫曼树数据结构
  • c语言数据结构算法编程库,数据结构 c语言中文网
  • c语言数据结构算法编程库,数据结构 c语言中文网,C语言编程数据结构基础详解小白篇
  • c++纸牌游戏,数据结构纸牌游戏c语言
  • c++纸牌游戏,数据结构纸牌游戏c语言,C语言实战之纸牌游戏
  • ,,c#解析jobject的数据结构
  • ,,javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
  • ,,Java 数据结构与算法系列精讲之背包问题
  • 留言与评论(共有 条评论)
       
    验证码: