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

自己做网站要会什么软件下载东莞seo建站哪家好

自己做网站要会什么软件下载,东莞seo建站哪家好,国内自动化网站建设,中国网络营销平台目录 ​ 线性表 顺序表 概念与结构 分类 静态顺序表 动态顺序表 动态顺序表的实现 在头文件中创建结构体 初始化顺序表 销毁顺序表(可以留到后面再看) 尾插数据 申请空间 打印顺序表数据 头插数据 尾删除数据 头删除数据 在指定位置插…

目录

线性表

顺序表

概念与结构

分类

静态顺序表

动态顺序表

动态顺序表的实现

在头文件中创建结构体

初始化顺序表

销毁顺序表(可以留到后面再看)

尾插数据

申请空间

打印顺序表数据

头插数据

尾删除数据

头删除数据

在指定位置插入数据

在指定位置删除数据

查询数据

顺序表算法题

移除元素

删除有序数组中的重复项

合并两个有序数组

代码


线性表

++++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 s1=0;int s2=0;while(s1<numsSize){if(nums[s1]==val){s1++;}else{nums[s2++]=nums[s1++];}}return s2;
删除有序数组中的重复项

 https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/

int sl1=0;int sl2=0;while(sl1 < numsSize){if(nums[sl1]==nums[sl2]){sl1++;}else{sl2++;nums[sl2]=nums[sl1];}}return sl2+1;
合并两个有序数组

 https://leetcode.cn/problems/merge-sorted-array/description/

 int s1 = m-1;int s2 = n-1;int s3 = m + n - 1;while(s1>=0 && s2 >=0 ){if(nums1[s1]<nums2[s2]){nums1[s3--]=nums2[s2--];}else{nums1[s3--]=nums1[s1--];}}while(s2>=0){nums1[s3--]=nums2[s2--];}

代码

seqlist.h

#include<stdio.h>
#include<stdlib.h>
#include<assert.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

#include"seqlist.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);//和r != NULL一样//判断空间够不够,不够(调整/开辟)空间pdkoj(r);//插入数据r->arr[r->size] = x;//size + 1r->size++;
}
//打印
void day(SL* r)
{assert(r);//和r != NULL一样//循环打印for (int i = 0; i < r->size; i++){printf("%d ", r->arr[i]);}
}
//头插数据
void toc(SL* r, data x)
{assert(r);pdkoj(r);//把全部数据,都往后移动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(r);//把size向后移动1位r->size--;
}//头删除
void tosc(SL* r)
{assert(r);//把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(r);pdkoj(r);//把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(r);//把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(r);for (int i = 0; i < r->size; i++){if (r->arr[i] == x){//找到了返回下标return i;}}//没找到返回-1return -1;
}

测试.c文件

#include"seqlist.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;

http://www.jinmujx.cn/news/80284.html

相关文章:

  • 杭州移动公司网站日本搜索引擎naver入口
  • 找家里做的工作到什么网站app推广接单发布平台
  • 十堰h5响应式网站西安百度推广联系方式
  • 做网站的客户资料交换qq群如何免费引流推广
  • 360上做网站谷歌play商店
  • 建设网站和app杭州制作公司网站
  • 网站开发一定找前端么网站网络营销公司
  • 工商局网站清算组备案怎么做青岛百度seo排名
  • 网站开发课程设计百度账户安全中心
  • 网站投入费用互联网营销师培训费用是多少
  • 佛山网站专家百度在线扫题入口
  • 哪哪个网站可以做兼职推广app赚钱
  • 绍兴网站建设哪家好随州今日头条新闻
  • 校园网站建设简介免费seo推广公司
  • 网站开发 方案北京seo课程培训
  • 普通网站建设的缺陷百度推广费
  • 网站诊断分析报告模板及优化执行方案.doc推广网络营销外包公司
  • 网站建设自助建站站长工具中文
  • 重庆大型的网站建设百度人工优化
  • 公司网页内容seo每日工作
  • 本溪网站设计西安seo外包平台
  • 东莞网站建设网站建立有趣的网络营销案例
  • amp 网站开发线上免费推广平台都有哪些
  • 长沙网站排名公司哪家好优化的近义词
  • 网站开发折旧做seo是什么意思
  • 国内有做外汇的正规网站吗如何拿高权重网站外链进行互换?
  • 深圳网站开发招聘优化用户体验
  • 深圳公关公司首荐乐云seoseo排名优化方式
  • 建站工具帝国百度网盘app下载安装 官方下载
  • php网站开发实例教程 传智播客全国各城市疫情高峰感染进度