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

免费网站主机太原网站建设技术托管

免费网站主机,太原网站建设技术托管,网站 设计报价,wordpress 知识管理文章目录 二、线性表2.1 定义、基本操作2.1.1 知识总览2.1.2 线性表的定义2.1.3 线性表的基本操作2.1.4 知识回顾与重要考点 2.2 顺序表2.2.1 知识总览2.2.2 顺序表的定义2.2.3 顺序表的实现——静态分配2.2.4 顺序表的实现——动态分配2.2.5 知识回顾与重要考点2.2.6 顺序表的… 文章目录 二、线性表2.1 定义、基本操作2.1.1 知识总览2.1.2 线性表的定义2.1.3 线性表的基本操作2.1.4 知识回顾与重要考点 2.2 顺序表2.2.1 知识总览2.2.2 顺序表的定义2.2.3 顺序表的实现——静态分配2.2.4 顺序表的实现——动态分配2.2.5 知识回顾与重要考点2.2.6 顺序表的插入和删除2.2.6.1 插入2.2.6.2 插入操作的时间复杂度2.2.6.3 删除2.2.6.4 删除操作的时间复杂度2.2.6.5 知识回顾与重要考点 2.2.7 顺序表的查找2.2.7.1 按位查找2.2.7.2 按值查找2.2.7.3 知识回顾与重要考点 二、线性表 2.1 定义、基本操作 2.1.1 知识总览 线性表 定义逻辑结构基本操作运算 2.1.2 线性表的定义 线性表线性表是具有相同数据类型的nn$$0个数据元素的有限序列其中n为表长当n0时线性表是一个空表。若用L命名线性表则其一般表示为 以下是几个概念 ai是线性表中的“第i个”元素线性表中的位序a1是表头元素an是表尾元素除第一个元素外每个元素有且仅有一个直接前驱除最后一个元素外每个元素有且仅有一个直接后继 2.1.3 线性表的基本操作 InitList(L)初始化表。构造一个空的线性表L分配内存空间。DestoryList(L)销毁操作。销毁线性表并释放线性表L所占用的内存空间ListInsert(L,i,e)插入操作。在表L中的第i个位置上插入指定元素eListDelete(L,i,e)删除操作。删除表L中第i个位置的元素并用e返回删除元素的值LocateElem(L,e)按值查找操作。在表L中查找具有给定关键字值的元素。GetElem(L,i)按位查找操作。获取表L中第i个位置的元素的值。 其他常用操作 Length(L)求表长。返回线性表L的长度即L中数据元素的个数。PrintList(L)输出操作。按前后顺序输出线性表L的所有元素值。Empty(L)判空操作。若L位空表则返回true否则返回false。 Tips 对数据的操作记忆思路——创销、增删改查C语言函数的定义—— 返回值类型 函数名(参数1类型参数1参数2类型参数2……)实际开发中可根据实际需求定义其他的基本操作函数名和参数的形式、命名都可改变命名要有可读性什么时候要传入“”——对参数的修改结果需要“带回来” 为什么要实现对数据结构的基本操作》 团队合作编程你定义的数据结构要让别人能够很方便的使用封装将常用的操作/运算封装成函数避免重复工作降低出错风险 2.1.4 知识回顾与重要考点 2.2 顺序表 2.2.1 知识总览 2.2.2 顺序表的定义 顺序表用顺序存储的方式实现线性表顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中元素之间的关系由存储单元的邻接关系来体现。 2.2.3 顺序表的实现——静态分配 #define MaxSize 10 //定义最大长度 typeof struct{ElemType data[MaxSize]; //用静态的“数组”存放数据元素int length; //顺序表的当前长度 }SqList; //顺序表的类型定义静态分配方式上述代码中给各个数据元素分配连续的存储空间大小位MaxSize*sizeof(ElemType) 代码实现 #include stdio.h #define MaxSize 10 //定义最大长度typedef struct {int data[MaxSize]; //用静态的“数组”存放数据元素int length; //顺序表的当前长度 }SqList; //顺序表的类型定义//基本操作——初始化一个顺序表 void InitList(SqList L) {for (int i 0; i MaxSize; i)L.data[i] 0; //将所有数据元素设置位默认初始值L.length 0; //顺序表初始长度为0 }int main() {SqList L; //声明一个顺序表InitList(L);//初始化顺序表//……未完待续后续操作return 0; }如果“数组”存满了怎么办 可以放弃治疗顺序表的表长刚开始确定后就无法更改存储空间是静态的 思考如果刚开始就声明一个很大的内存空间呢存在什么问题 2.2.4 顺序表的实现——动态分配 Key动态申请和释放内存空间 C —— malloc、free函数 malloc函数返回一个指针需要强制转型为你定义数据元素类型指针 egL.data (ElemType *)malloc(sizeof(ElemType)*InitSize) 表示要申请的一整片连续的内存空间 C —— new、delete关键字 代码实现 #include stdlib.h #define InitSize 10 //默认的最大长度typedef struct {int* data; //指示动态分配数组的指针int MaxSize; //顺序表的最大容量int length; //顺序表的当前长度 }SeqList;void InitList(SeqList L) {//用malloc函数申请一片连续的内存空间L.data (int*)malloc(InitSize * sizeof(int));L.length 0;L.MaxSize InitSize; }//增加动态数组的长度 void IncreaseSize(SeqList L, int len) {int* p L.data;L.data (int*)malloc((L.MaxSize len) * sizeof(int));for (int i 0; i L.length; i) {L.data[i] p[i]; //将数据复制到新区域}L.MaxSize L.MaxSize len; //顺序表最大长度增加lenfree(p); //释放原来的内存空间 }int main() {SeqList L; //声明一个顺序表InitList(L); //初始化顺序表//……往顺序表中随便插入几个元素……IncreaseSize(L, 5);return 0; }顺序表的特点 随机访问即可以在O(1)时间内找到第i个元素。代码实现data[i-1]存储密度高每个节点只存储数据元素。拓展容量不方便即便采用动态分配的方式实现。拓展长度的时间复杂度也比较高插入、删除操作不方便需要移动大量元素。 2.2.5 知识回顾与重要考点 2.2.6 顺序表的插入和删除 2.2.6.1 插入 ListInsert(L,i,e)插入操作。在表L中的第i个位置插入指定元素e。 代码实现 #include stdio.h #define MaxSize 10 //定义最大长度typedef struct {int data[MaxSize]; //用静态的“数组”存放数据元素int length; //顺序表的当前长度 }SqList; //顺序表的类型定义//基本操作——初始化一个顺序表 void InitList(SqList L) {for (int i 0; i MaxSize; i)L.data[i] 0; //将所有数据元素设置位默认初始值L.length 0; //顺序表初始长度为0 } //插入 bool ListInsert(SqList L, int i, int e) {if (i1 || iL.length 1) //判断i的范围是否有效return false;if (L.length MaxSize) //当前存储空间已满不能插入return false;for (int j L.length; j i; j--) {L.data[j] L.data[j - 1]; //将第i个元素及之后的元素后移}L.data[i - 1] e; //在位置i出放入eL.length; //长度加1return true; }int main() {SqList L; //声明一个顺序表InitList(L);//初始化顺序表//……此处省略一些代码插入几个元素ListInsert(L, 3, 3);printf(data[2]%d, L.data[2]);return 0; }2.2.6.2 插入操作的时间复杂度 2.2.6.3 删除 ListDelete(L,i,e)删除操作。删除表L中第i个位置的元素并用e返回删除元素的值。 代码实现 #include stdio.h #define MaxSize 10 //定义最大长度typedef struct {int data[MaxSize]; //用静态的“数组”存放数据元素int length; //顺序表的当前长度 }SqList; //顺序表的类型定义//基本操作——初始化一个顺序表 void InitList(SqList L) {for (int i 0; i MaxSize; i)L.data[i] 0; //将所有数据元素设置位默认初始值L.length 0; //顺序表初始长度为0 } //插入 bool ListInsert(SqList L, int i, int e) {if (i1 || iL.length 1) //判断i的范围是否有效return false;if (L.length MaxSize) //当前存储空间已满不能插入return false;for (int j L.length; j i; j--) {L.data[j] L.data[j - 1]; //将第i个元素及之后的元素后移}L.data[i - 1] e; //在位置i出放入eL.length; //长度加1return true; } //删除 bool ListDelete(SqList L, int i, int e) {if (i1 || iL.length) //判断i的范围是否有效return false;e L.data[i - 1]; //将被删除的元素赋值给efor (int j i; j L.length; j) {L.data[j - 1] L.data[j]; //将第i个位置后的元素前移}L.length--; //线性表长度减1return true; } int main() {SqList L; //声明一个顺序表InitList(L);//初始化顺序表//……此处省略一些代码插入几个元素ListInsert(L, 3, 3);int e -1; //用变量e把删除的元素“带回来”if (ListDelete(L, 3, e))printf(已删除第3个元素删除元素为%d\n, e);elseprintf(位序i不合法删除失败\n);return 0; }2.2.6.4 删除操作的时间复杂度 2.2.6.5 知识回顾与重要考点 2.2.7 顺序表的查找 2.2.7.1 按位查找 静态分配实现按位查找 动态分配实现按位查找 按位查找的时间复杂度 2.2.7.2 按值查找 LocateElem(L,e)按值查找操作。在表L中查找具有给定关键字值的元素。 注意数组下标为i的元素值等于e返回其位序i1 代码实现 #include stdio.h #define MaxSize 10 //定义最大长度typedef struct {int data[MaxSize]; //用静态的“数组”存放数据元素int length; //顺序表的当前长度 }SqList; //顺序表的类型定义//基本操作——初始化一个顺序表 void InitList(SqList L) {for (int i 0; i MaxSize; i)L.data[i] 0; //将所有数据元素设置位默认初始值L.length 0; //顺序表初始长度为0 } //插入 bool ListInsert(SqList L, int i, int e) {if (i1 || iL.length 1) //判断i的范围是否有效return false;if (L.length MaxSize) //当前存储空间已满不能插入return false;for (int j L.length; j i; j--) {L.data[j] L.data[j - 1]; //将第i个元素及之后的元素后移}L.data[i - 1] e; //在位置i出放入eL.length; //长度加1return true; } //删除 bool ListDelete(SqList L, int i, int e) {if (i1 || iL.length) //判断i的范围是否有效return false;e L.data[i - 1]; //将被删除的元素赋值给efor (int j i; j L.length; j) {L.data[j - 1] L.data[j]; //将第i个位置后的元素前移}L.length--; //线性表长度减1return true; } //在顺序表L中查找第一个元素值等于e的元素并返回其位序 int LocateElem(SqList L, int e) {for (int i 0; i L.length; i) {if (L.data[i] e)return i 1;}return 0; } int main() {SqList L; //声明一个顺序表InitList(L);//初始化顺序表//……此处省略一些代码插入几个元素ListInsert(L, 3, 3);int i LocateElem(L, 3);printf(位序为%d, i);return 0; }按值查找的时间复杂度 2.2.7.3 知识回顾与重要考点
http://www.zqtcl.cn/news/152747/

相关文章:

  • 网站建设互联网推广广告设计公司业务范围
  • 昆明网站关键词优化沪佳装修公司全部门店
  • 南阳卧龙区2015网站建设价格快三直播十大平台直播间
  • 网站谁做的wordpress 空白页面
  • 专业的佛山网站建设公司Wordpress 帖子翻译
  • 南昌网站建设公司网站建设公司深圳企业网站模板
  • 一家做特卖的网站docker创建wordpress
  • 网站开发设计电子书网站后台无法更新缓存
  • 南京高端网站制作公司哪家好神起网络公司
  • 建网站选哪个宁波网站建设设计图
  • 贾汪徐州网站开发门户网站解决方案
  • 网站如何做淘宝支付个人注册商标步骤
  • 书香校园网站建设网站排名下降了怎么办
  • 观音桥网站建设湖南省建设银行网站官网
  • 信阳网站建设找汉狮搭建网站知识
  • 企业门户网站用户类型商务信息网
  • 深圳网站设计廊坊公司深圳ui设计培训班
  • 为什么网站需要维护帮人推广注册app的平台
  • 网站开发岗位要求服务好的做培训网站
  • 宁波制作网站企业有哪些学网页设计需要什么学历
  • 网站建设公司墨子网络百度域名续费
  • 琪觅公司网站开发中文网页开发工具
  • 教育网站制作设计成都网络营销公司
  • 怎么查看一个网站页面的seo优化情况网站建站建设首选上海黔文信息科技有限公司2
  • 威海网站建设价格深圳优美网络科技有限公司
  • 做网站用什么系统建设网站投资多少
  • 凡科建站官网 网络服务抚顺 网站建设
  • 学校网站的建设方案西安企业seo外包服务公司
  • 建设租车网站深圳ww
  • 推广网络网站潜江资讯网一手机版