有哪些网站可以免费做外销qq是哪家公司开发的

当前位置: 首页 > news >正文

有哪些网站可以免费做外销,qq是哪家公司开发的,网页截图快捷键设置,邯郸注册公司目录 ​ 线性表 顺序表 概念与结构 分类 静态顺序表 动态顺序表 动态顺序表的实现 在头文件中创建结构体 初始化顺序表 销毁顺序表#xff08;可以留到后面再看#xff09; 尾插数据 申请空间 打印顺序表数据 头插数据 尾删除数据 头删除数据 在指定位置插… 目录 ​ 线性表 顺序表 概念与结构 分类 静态顺序表 动态顺序表 动态顺序表的实现 在头文件中创建结构体 初始化顺序表 销毁顺序表可以留到后面再看 尾插数据 申请空间 打印顺序表数据 头插数据 尾删除数据 头删除数据 在指定位置插入数据 在指定位置删除数据 查询数据 顺序表算法题 移除元素 删除有序数组中的重复项 合并两个有序数组 代码 线性表 1 线性表linear list是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使⽤的 数据结构常⻅的线性表顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的线性 表在物理上存储时通常以数组和链式结构的形式存储。 线性表是具有相同特性的集合就比如现实生活中的水果有苹果香蕉西瓜等等….这些都是水果类型的。线性表顺序表、链表、栈、队列、字符串等等… 顺序表 概念与结构 概念顺序表是⽤⼀段物理地址连续的存储单元依次存储数据元素的线性结构⼀般情况下采⽤数组 存储。 逻辑结构就像一家早餐店早上有很多人排队排成一条线这就是逻辑结构都是线性的 顺序表也是数组顺序表在物理结构不一定连续在逻辑结构是连续的 顺序表和数组的区别 顺序表的底层结构是数组对数组的封装实现了常⽤的增删改查等接⼝。 下面这张图苍蝇馆子就像数组米其林餐厅就像顺序表一个普普通通的炒西蓝花在米其林餐厅西蓝花料汁小饰品摆盘就变成了绿野仙踪 顺序表也是一样在数组的基础上加了增加数据删除数据修改数据查找数据就变成了顺序表 分类 静态顺序表 概念使⽤定⻓数组存储元素 静态数组只需要定长数组有效数据个数 静态顺序表缺陷空间给少了不够⽤给多了造成空间浪费 静态顺序表不推荐用如果要存放用户数据的话当数据存满了剩下的数据就会丢失。 动态顺序表 动态顺序表需要有效个数空间的容量a也可以说就是个数组 动态顺序表的实现 代码在文章最后 我们需要创建一个seqlist.h头文件seqlist.c文件存放函数还有一个.c的测试文件。 在头文件中创建结构体 把int 重命名为 data这样方便修改类型就不用一个一个修改了 初始化顺序表 我们要在头文件声明一下这样的话我们可以方便查看有什么函数就像我们看一本书书有目录方便我们阅读。 初始化我们需要把arr赋值为NULL有效个数和空间容量赋值为0就好了。 如果我们现在申请空间会导致空间满了我们没法调整。 我们只需要添加数据的数据申请/调整空间就好了。 我们可以发现初始化成功了 销毁顺序表可以留到后面再看 这里我先讲顺序表销毁也可以先往后看最后再来看销毁。 我们申请空间用完了需要还不然存在空间泄露。 if判断结构体里arr的有没有数据,有数据就free释放空间有效个数和空间容量赋值为0。 arr没有数据的话就是为NULL就不释放空间了。 尾插数据 尾插数据我们只需要在size这个位置插入数据然后就可以了。 没有数据的话会在0下标位置插入数据然后。 这里有2个参数第二个参数是要插入的数据 申请空间 空间容量 等于 有效个数就说明空间不够需要申请空间。 申请空间2倍2倍增加这样可以避免空间不够或者空间给多了2倍2倍增加可以小部分避免空间不够或者空间给多了。 0乘任何数都得0。空间容量一开始就是0,我们需要先给个4。 这有2个临时的变量。 三目操作符这个空间容量等于0,就给4不等于0 就空间大小乘2。 然后realloc给 arr 申请空间 app得到的是字节还需要乘类型大小才能得到类型需要的空间。 if判断是不是等于NULL。是就报错然后退出 不是就把创建的临时变量tab赋值给arr app赋值给koj空间容量。 在arr下标为size的位置插入数据。然后。 我们可以看到1,2,3,4都有了。 打印顺序表数据 i小于有效个数 我们可以看到1,2,3,4都打印出来了。 头插数据 这个就是把全部数据往后移动1位然后在0下标插入数据 打印结果 尾删除数据 尾删除我们只需要把size往后移动1位就行了 我们可以看到4没了。 头删除数据 就是把1下标到3下标往前移动1位就行了。 我们发现1删除了 在指定位置插入数据 这里多了个参数int a这个是要插入数据的下标要把数据插入那个下标。 把a下标往后的数据向后移动1位然后在a下标位置插入数据。 我们可以发现在2下标位置插入了99 在指定位置删除数据 int a是要删除的下标 把a下标位置后面的数据向前移动1位 我们发现2删除了2的下标是1 查询数据 我们可以通过循环的方式查询找到了返回下标 我们可以看到返回的下标是2 顺序表算法题 移除元素 https://leetcode.cn/problems/remove-element/description/ int s10;int s20;while(s1numsSize){if(nums[s1]val){s1;}else{nums[s2]nums[s1];}}return s2; 删除有序数组中的重复项 https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/ int sl10;int sl20;while(sl1 numsSize){if(nums[sl1]nums[sl2]){sl1;}else{sl2;nums[sl2]nums[sl1];}}return sl21; 合并两个有序数组 https://leetcode.cn/problems/merge-sorted-array/description/ int s1 m-1;int s2 n-1;int s3 m n - 1;while(s10 s2 0 ){if(nums1[s1]nums2[s2]){nums1[s3–]nums2[s2–];}else{nums1[s3–]nums1[s1–];}}while(s20){nums1[s3–]nums2[s2–];}代码 seqlist.h #includestdio.h #includestdlib.h #includeassert.h typedef int data; typedef struct sxb {data* arr;int size;//有效个数int koj;//空间容量}SL;//给整个结构体命名SL//初始化顺序表 void csh(SL* r); //销毁顺序表 void xiaoh(SL* r); //尾插数据 void weic(SL* r,data x); //打印 void day(SL* r); //头插数据 void toc(SL* r,data x); //尾删除 void weisc(SL* r); //头删除 void tosc(SL* r); //指定位置插入 void zhidcr(SL* r,int a,data x); //在指定位置删除数据 void zhidsc(SL* r, int a); //查询数据 int cxsj(SL* r, data x); seqlist.c #includeseqlist.h //初始化顺序表 void csh(SL* r) {r-arr NULL;r-size 0;r-koj 0; } //销毁顺序表 void xiaoh(SL* r) {if (r-arr ! NULL){free(r-arr);}r-koj 0;r-size 0; } //判断空间 void pdkoj(SL* r) {if (r-koj r-size){//三目操作符int app r-koj 0 ? 4 : r-koj * 2;//申请空间data* tab (data*)realloc(r-arr, app * sizeof(data));if (tab NULL){perror(realloc);exit(1);}//赋值r-arr tab;r-koj app;} }//尾插数据 void weic(SL* r,data x) {assert®;//和r ! NULL一样//判断空间够不够不够调整/开辟空间pdkoj®;//插入数据r-arr[r-size] x;//size 1r-size; } //打印 void day(SL* r) {assert®;//和r ! NULL一样//循环打印for (int i 0; i r-size; i){printf(%d , r-arr[i]);} } //头插数据 void toc(SL* r, data x) {assert®;pdkoj®;//把全部数据都往后移动1位for (int i r-size; i 0; i–){r-arr[i] r-arr[i - 1];}//在0下标插入数据r-arr[0] x;r-size; }//尾删除 void weisc(SL* r) {assert®;//把size向后移动1位r-size–; }//头删除 void tosc(SL* r) {assert®;//把1下标 到 3下标往前移动1位for (int i 0; i r-size-1; i){r-arr[i] r-arr[i 1];}//删除完size往后移动1位r-size–; } //指定位置插入 void zhidcr(SL* r,int a, data x) {assert®;pdkoj®;//把a下标往后的数据移动1位for (int i r-size; i a; i–){r-arr[i] r-arr[i - 1];}//在a下标的位置插入数据r-arr[a] x;r-size; } //指定位置删除数据 void zhidsc(SL* r, int a) {assert®;//把a下标位置后面的数据向前移动1位for (int i a; i r-size-1; i){r-arr[i] r-arr[i 1];}//size–r-size–; } //查询数据 int cxsj(SL* r, data x) {assert®;for (int i 0; i r-size; i){if (r-arr[i] x){//找到了返回下标return i;}}//没找到返回-1return -1; } 测试.c文件 #includeseqlist.h void cs() {SL add;//初始化csh(add);//尾插weic(add, 1);weic(add, 2);weic(add, 3);weic(add, 4);//打印day(add);//查询数据int q cxsj(add, 3);if (q 0){printf(没有找到\n);}else{printf(找到了下标是: %d, q);}//销毁xiaoh(add); } int main() {cs();return 0;