首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为实习准备的数据结构(1)-- 详尽数组篇

数组的大小是固定的,不能额外增加元素,当想定义不固定大小的字符时,使用vector vector vec; // 创建向量用于存储整型数据 int m; // 显示vec初始大小 cout...test2 再看一个vectortest3(10); 创建一个vector容器,大小为10,内容默认置空 不是很建议这种做法啊,往里面插成段的值的时候只能插入第一个,后面就无法插入了。...解决办法是:==重新为iter进行赋值== for(iter = v1.begin(); iter !...int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。...------ Vector的数据结构 所谓动态增添大小,并不是在原有空间之后再开辟空间,显然那也不太现实。 而是以原大小的两倍大小寻找一块新空间,将内容真实的拷贝过去,然后释放原空间。

49300
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用数组结构实现大小固定的队列和栈(java)

    栈的实现 栈的特点是先进后出,所以用数组实现栈时,只需要利用一个指针判定数据存储的位置即可,添加元素时判断指针是否超过数组长度,如果没有越界将元素添加到指针所指的位置,并将指针向下移动一位;否则返回异常...删除元素思路类似,判断指针是否为数组初始位置,不是则将指针所指元素返回,并将指针向上。...队列的特点是先进先出"FIFO",所以用数组实现队列操作时,我们需要利用三个变量对数组进行操作,start指针用于记录先进队列的数据,end指针始终指向存入数据的下个位置,如果指针越界则返回0点。...size用于记录队列中元素的个数,加入元素时需要先判断size大小是否超过数组的长度,如果超出则抛出异常显示队列已满,反之则将元素添加至end指针所指的位置,并将end指针移位(需要判断是否发生指针越界...当队列未满时(cur_size的数放到end位置,当队列不为空时(size>0),出队的数为start位置的数。

    76940

    【数据结构】二次封装自己的数组(三)升级为动态数组

    我们之前在我们的数组内部封装了静态的数组,如果当我们的数组增加,超过了我们数组所设置的容量时,程序会出现错误。...创建一个新数组,容量为原来容量的两倍,将原数据拷贝进新数组,并改变data的引用。...222); Console.WriteLine(arr.ToString()); Console.ReadKey(); } 我们在初始时设置数组的容量为...我们再次添加111,发现数组扩容了两倍,capacity=16,再次添加222,数组数据增加1,容量不变。符合我们设计的预期。...如果容量比较大,我们存的数据使用的空间少,将会造成资源的浪费,我们这时设置,当数组中数据的量小于容量的1/2时,将数组容量缩减一半 修改删除方法 //删除指定索引位置的元素 public

    9610

    寻找大小为n的数组中出现次数超过n2的那个数

    问题描述: 在一个大小为n的数组中,其中有一个数出现的次数超过n/2,求出这个数。...这题看似很简单,但是找到最优解不容易,一般情况我们首先想到最笨的方法,每选一个数,遍历一次数组,复杂度O(N^2),或者先排序再找那个数,复杂度一般为O(NlgN),或者用hash,时间复杂度O(N),...所以这些都不是最优解,我们先分析一下这个题目,设该数出现的次数为x,则x满足,n/2+1的数全部相抵消的话,至少还剩1个,我们从前往后遍历,设key为第一个数...,key出现的次数为ntime,初始化为1,代表key出现了一次,从前往后,如果某个数不等于key,则他俩抵消,key的出现次数减一,如果等于key,则key的出现次数加1,如果key的出现次数变成了0...#include #include using namespace std; /*在大小为n的数组中寻找次数超过n/2的数*/ int find_data(vector

    57820

    深入理解 C 语言中的联合体

    二、 联合体与结构体的区别 1.结构体 内存分配:结构体中的每个成员都分配独立的内存区域,结构体的大小是所有成员大小之和(可能还会有填充字节)。...数据存取:结构体的每个成员都可以独立地存取和修改。 2.联合体 内存分配:联合体中的所有成员共享同一块内存,联合体的大小等于最大成员的大小。...1.匿名联合体 匿名联合体(Anonymous Union)是一种不需要命名的联合体。...它的主要作用是简化代码,特别是在结构体中直接访问联合体成员时,可以省略联合体的名字。 假设我们有一个结构体,其中包含一个匿名联合体用于存储不同的数据格式。...= 42; // 设置数组元素为浮点数 dataArray[1].f = 3.14; // 设置数组元素为字符串 snprintf(dataArray[2].str, sizeof

    58910

    盘点4种计算数组中元素值为1的个数方法

    实现过程 方法一 这个方法是【北京-算法-斯阔以】大佬给出的,这里使用了匿名函数和filter函数。...a = [1,0,2,0,1] b = list( filter(lambda x:x==1,a)) print(b) print(f"1的个数:{len(b)}") 方法二 这个方法来自【广州-数据分析...a = [1, 0, 2, 0, 1] b = [x for x in a if x == 1] print(len(b)) print(f"1的个数:{len(b)}") 方法三 这个方法来自【广州...a = [1, 0, 2, 0, 1] print(a.count(1)) print(f"1的个数:{a.count(1)}") 总结 大家好,我是Python进阶者。...这篇文章主要基于粉丝提问,寻找数组中数值为1的所有个数,题目倒是挺基础的,文中给出了四个方法,分别用到了匿名函数、filter()函数、Counter()函数、count()函数等,顺利帮助粉丝解决了问题

    86440

    当包容结构体遇见灵活的内存管理

    7.结构体的自引用 8.匿名结构体注意 9.内存对齐 10.位段 二.动态内存管理 1.为什么要有动态内存管理 2.malloc函数 3.free函数 4.calloc函数 5.relloc函数...三.柔性数组 1.定义 2.举例 3.注意 四.typedef关键字 1.typedef关键字的使用格式: 2.举例: 五.联合体 1.定义 2.举例 3.联合体大小 六.枚举 1.定义 2.举例...Node* next; }; 8.匿名结构体注意 在使用匿名结构体时,只能使用一次,且两个结构体比较时已经失效 9.内存对齐 1.结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量为0的地址处 2其他成员变量要对...= NULL) { ptr = p; } 三.柔性数组 1.定义 结构中的最后⼀个元素允许是未知大小的数组,这就叫做柔性数组成员 2.举例 typedef struct Stu { int i; int...包含柔性数组成员的结构⽤malloc函数进⾏内存的动态分配,并且分配的内存应该⼤于结构 的⼤⼩,以适应柔性数组的预期⼤⼩ 四.typedef关键字 1. typedef关键字的使用格式

    9810

    C语言结构体、联合与枚举类型

    此外,还有一种特殊的结构体类型———匿名结构体,顾名思义匿名结构体就是没有给结构体赋予名字,那么若想创建匿名结构体变量只能在结构体声明后才能创建,在函数内部不可创建,当然也不推荐大家用匿名结构体类型,毕竟能使用匿名结构体类型的场景很少...s2为StuInfo的结构体变量 int main() { struct StuInfo s1; //创建学生信息的结构体变量 char sex[5] = "男"; strcpy(s1.name...其实,我上面已经说了,联合体的成员是指向同一片内存空间的,与结构体不同,结构体是每个成员有自己的单独开辟的空间,所以,联合体在使用的时候尽量不要多个成员一起使用,除非使用的成员占用内存大小要小于等于最大成员所占内存空间大小...由sizeof(s)可以看出来这个联合体占用八个字节,我们来分析这个联合体,由一个字符数组与整型变量,其中字符数组大小为6个字节,又联合体的默认对齐数为4个字节,所以在成员列表中最大成员占用6个字节,又成员变量占用字节数必须是默认对齐数的整数倍...(如果这部分不懂可以看我接下来的文章,也包括结构体共用体大小的计算,都在持续更新中!)

    11810

    【C语言必学知识点六】自定义类型——结构体

    结构体 导读 大家好,很高兴又和大家见面啦!!! 经过前面的学习,我们对C语言中的数据类型有了一个比较清晰的认识。对于数据类型,我们可以简单的理解为数据在内存中存放的形式以及所占空间的大小。...数组是由多个相同的数据类型的变量所组成的集合,如字符数组是由一个或多个字符类型的变量组成的集合,整型数组是由一个或多个整型变量组成的集合; 而指针类型则是表明了指针在一次操作中的权限大小 ,如字符指针在一次操作中只能够操作一个字节的内容...如下所示: 可以看到我们第一次声明了一个匿名结构体,并创建了一个结构体变量t1,之后我们又声明了一个结构体成员与上一个匿名结构体相同的匿名结构体,并创建了一个结构体变量t2与一个结构体指针pt。...但是当我们用pt来接收t1的地址时,我们会发现此时程序报了警告,警告的内容是操作符两侧的类型不兼容。 也就是说,即使这两个匿名结构体的结构体成员是一致的,但是,系统会认为它们是两个不同的结构体类型。...因此我们可以得到以下结论: 匿名结构体只能够在声明的同时创建变量,也就是匿名结构体只能使用一次; 当通过typedef将匿名结构体重命名后,该匿名结构体就能够多次使用; 不管有没有对匿名结构体进行重命名

    9110

    【C语言】详解结构体(上)

    所谓的内置的数据类型可以认为是C语言自带的数据类型(char、int、float、double、bool),而自定义的数据类型(数组、结构体、联合体和枚举)中的结构体类型就是本文所要分享给大家的。...为了让大家能够更好的学习结构体,这里就先引入我们之前学过的数组的一些知识。 我们都是知道,数组里面的元素都是相同类型的,并且它们在内存空间中是连续存放的。那这时我们就会有这么一个疑惑?...警告信息为:“=”: 从“*”到“*”的类型不兼容 也就是说ps所指向的结构体与变量s所代表的结构体不属于同一个结构体类型,尽管它们里面成员一模一样 为此,我们总结一下匿名结构体使用的注意事项:...结构体的自引用 在结构体包含一个类型为改结构体本身的成员是否可以呢? 答案是肯定的,不过有一定的语法规则。为什么会这样说呢?...这个结构体的声明给我们一种陷入了死循环的感觉,而这个结构体的大小就为无穷大。

    9110

    【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)

    文章目录 前言 1 结构体的声明 1.1 结构的基础知识 1.2 结构的声明 1.2.1 . 匿名结构体类型声明 1.2.2 匿名结构体类型的的缺陷 2....诶这里我们就会发现我们根本计算不了这个结构体的大小是多少!...也可以对比数组 数组是一块连续的空间里存放相同类型的数据 链表是一块不连续的空间里存放不相同类型的数据 而这就是结构体自引用的妙用了 2.2 结构体自引用的注意事项 但是在使用的时候,有些人会犯这样的错误一定要注意...name, p1.age, p1.sex, p1.id); return 0; } 代码结果: 3.2 typedef 的定义和初始化 typedef...{"l",99}, 3.14}; return 0; } 3.1 自引用的定义和初始化 前面结构体包含结构体的的初始化我们都知道了,那么自引用和它基本一样,自引用引用的是相同类型的地址所以我们可以先赋值为

    73710

    结构体类型

    之前就很细致的讲过了在这篇文章中写文章-CSDN创作中心 现在再补充一点,其大小端不影响单个字节内部的比特位排序,其单个字节内部比特位排序是固定的,如1为00000000 00000000 00000000...对于匿名struct的这个创建变量只能声明时创建变量的这个局限,我们就可以用typedef这个关键词解决这个问题。...我们将匿名的struct命名为其他名字,此时用其他名字去创建变量,就可以被编译器所允许。 该图中用typedef作用于匿名struct后,其就能在其他地方创建变量了。...在结构体⾃引⽤使⽤的过程中,夹杂了 typedef 对匿名结构体类型重命名,也容易引⼊问题,看看 下⾯的代码,可⾏吗?...5.对于一个数组来说,其数组的对齐数=编译器默认的一个对齐数与其成员的类型大小,如int arr[40]其对齐数就为 4.

    8410
    领券