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

vps 建网站 代理vs2010做的网站

vps 建网站 代理,vs2010做的网站,德胜门网站建设,手机网站栏目结构图目录 前言一、定义与特点二、类型三、基本操作四、应用场景五、优缺点六、元素插入和删除动态图解插入删除 七、代码模板八、使用顺序表的经典例题1.求奇数的乘积代码题解 2.数值统计代码题解 九、总结结语 前言 顺序表示最基础的数据结构之一#xff0c;它也是我们学习开始学… 目录 前言一、定义与特点二、类型三、基本操作四、应用场景五、优缺点六、元素插入和删除动态图解插入删除 七、代码模板八、使用顺序表的经典例题1.求奇数的乘积代码题解 2.数值统计代码题解 九、总结结语 前言 顺序表示最基础的数据结构之一它也是我们学习开始学习数据结构的第一个必须要掌握的数据结构学习数据结构一定是由浅到深所以我们最好是先学习简单的在学习有难度的因为直接学习难的数据结构很容易劝退让我们来深入了解顺序表。 一、定义与特点 定义顺序表Sequence List是线性表的一种实现方式它使用一段地址连续的存储单元依次存储线性表的数据元素。 特点 1.数据元素在物理存储上是连续的这使得顺序表在访问元素时具有较高的效率。 2.顺序表支持随机访问即可以通过索引直接访问表中的任意元素时间复杂度为O(1)。 3.顺序表的插入和删除操作可能需要移动大量的元素尤其是在插入或删除中间位置的元素时时间复杂度为O(N)其中N是表中元素的数量。 二、类型 静态顺序表静态顺序表在初始化后其空间大小就不能更改。这意味着如果空间不足就无法向表中添加新的元素而如果空间过大则可能造成内存的浪费。因此静态顺序表在实际应用中具有一定的局限性。 动态顺序表动态顺序表则可以根据需要动态地调整空间大小。当空间不足时可以自动扩容当空间过多时也可以进行缩容尽管在实际应用中缩容并不常见。这使得动态顺序表在实际应用中更加灵活和高效 三、基本操作 初始化为顺序表分配必要的存储空间并初始化相关参数如有效数据个数、容量等。 销毁释放顺序表所占用的存储空间以避免内存泄漏。 插入在顺序表的指定位置插入一个新的元素。这可能需要移动其他元素来腾出位置。 删除从顺序表中删除指定位置的元素。这同样可能需要移动其他元素来填补位置。 查找在顺序表中查找指定值的元素并返回其位置如果存在。这通常通过遍历数组来实现。 访问通过索引直接访问顺序表中的指定元素。这是顺序表的一个主要优点。 四、应用场景 顺序表适用于需要频繁访问元素的场景因为顺序表支持随机访问可以在常数时间内访问到表中的任意元素。此外顺序表也适用于元素个数相对稳定的场景因为频繁的插入和删除操作可能会导致顺序表的效率下降。 五、优缺点 优点 支持随机访问访问速度快。 在物理存储上是连续的有利于CPU高速缓存的命中率。 缺点 插入和删除操作可能需要移动大量的元素效率较低。 在空间不足时需要扩容扩容操作可能比较耗时且浪费空间尽管通常采用两倍扩容策略来减少扩容次数。 六、元素插入和删除动态图解 插入 删除 七、代码模板 #includeiostream using namespace std;#define eType intstruct SequentialTable {eType* elements;int size;int capacity; };void initailizeTable(SequentialTable* list, int capacity) {//1.初始化顺序表list-elements new eType[capacity];//elements申请内存为eType类型的内存空间相当于数组容量为capacitylist-capacity capacity;list-size 0;}void destroyTable(SequentialTable* list) {//销毁顺序表delete[] list-elements;//将elements内存空间销毁 }int getSize(SequentialTable* list) {//顺序表长度return list-size; }bool isEmpty(SequentialTable* list) {//顺序表是否为空return list-size 0; }void insertElement(SequentialTable* list,int index, eType x) {//插入元素 index为插入位置x为插入的元素if (index0 || indexlist-size) {throw std::invalid_argument(Invalid index);//插入位置非法那么抛出异常}if (list-size list-capacity) {//如果顺序表长度大于容量那就扩容int newCapacity 2 * list-capacity;//容量扩大为原来的两倍eType* newElements new eType[newCapacity];for (int i 0; i list-size; i) {newElements[i] list-elements[i];}delete[] list-elements;//释放原来内存空间list-elements newElements;list-capacity newCapacity;}for (int i list-size; i index; i--) {list-elements[i] list-elements[i - 1];}list-elements[index] x;list-size;//注意插入元素长度加一 }void deleteElement(SequentialTable* list, int index) {if (index 0 || index list-size) {throw std::invalid_argument(Invalid index);}if (list-size 0) {//如果顺序表没有元素那么进行不了删除操作抛出异常throw std::invalid_argument(Invalid index);}for (int i index; i list-size - 1; i) {list-elements[i] list-elements[i 1];}list-size--;//长度减一 }int findElement(SequentialTable* list, eType x) {//找出元素的索引for (int i 0; i list-size; i) {if (x list-elements[i])return i;}return -1;//找不到返回-1 }eType getElement(SequentialTable* list, int index) {//返回索引对应的元素if (index 0 || index list-size) {throw std::invalid_argument(Invalid index);}return list-elements[index]; }void updateElement(SequentialTable* list, int index, eType x) {//更新元素if (index 0 || index list-size) {throw std::invalid_argument(Invalid index);}list-elements[index] x; }int main() {//测试代码SequentialTable st;initailizeTable(st, 10);for (int i 0; i 10; i) {insertElement(st, i, i * 10);}deleteElement(st, 0);cout st.elements[0] endl;insertElement(st, 0, 0);cout st.elements[0] endl;cout isEmpty(st) endl;cout findElement(st, 70) endl;cout getElement(st, 7) endl;updateElement(st, 0, 1);cout st.elements[0] endl;return 0; }八、使用顺序表的经典例题 1.求奇数的乘积 帅哥们这个蓝色字体可以点进去看原题 代码题解 #includeiostream using namespace std;#define eType intstruct SequentialTable {eType* elements;int size;int capacity; };void initailizeTable(SequentialTable* list, int capacity) {//1.初始化顺序表list-elements new eType[capacity];//elements申请内存为eType类型的内存空间相当于数组容量为capacitylist-capacity capacity;list-size 0;}void destroyTable(SequentialTable* list) {//销毁顺序表delete[] list-elements;//将elements内存空间销毁 }int getSize(SequentialTable* list) {//顺序表长度return list-size; }bool isEmpty(SequentialTable* list) {//顺序表是否为空return list-size 0; }void insertElement(SequentialTable* list,int index, eType x) {//插入元素 index为插入位置x为插入的元素if (index0 || indexlist-size) {throw std::invalid_argument(Invalid index);//插入位置非法那么抛出异常}if (list-size list-capacity) {//如果顺序表长度大于容量那就扩容int newCapacity 2 * list-capacity;//容量扩大为原来的两倍eType* newElements new eType[newCapacity];for (int i 0; i list-size; i) {newElements[i] list-elements[i];}delete[] list-elements;//释放原来内存空间list-elements newElements;list-capacity newCapacity;}for (int i list-size; i index; i--) {list-elements[i] list-elements[i - 1];}list-elements[index] x;list-size;//注意插入元素长度加一 }void deleteElement(SequentialTable* list, int index) {if (index 0 || index list-size) {throw std::invalid_argument(Invalid index);}if (list-size 0) {//如果顺序表没有元素那么进行不了删除操作抛出异常throw std::invalid_argument(Invalid index);}for (int i index; i list-size - 1; i) {list-elements[i] list-elements[i 1];}list-size--;//长度减一 }int findElement(SequentialTable* list, eType x) {//找出元素的索引for (int i 0; i list-size; i) {if (x list-elements[i])return i;}return -1;//找不到返回-1 }eType getElement(SequentialTable* list, int index) {//返回索引对应的元素if (index 0 || index list-size) {throw std::invalid_argument(Invalid index);}return list-elements[index]; }void updateElement(SequentialTable* list, int index, eType x) {//更新元素if (index 0 || index list-size) {throw std::invalid_argument(Invalid index);}list-elements[index] x; }int main() {//测试代码int n;while (cin n) {SequentialTable s;initailizeTable(s, 1);for (int i 0; i n; i) {int x;cin x;insertElement(s, i, x);}int ret 1;for (int i 0; i s.size; i) {int val getElement(s, i);if (val 1)ret * val;}cout ret endl;}return 0; }2.数值统计 帅哥们这个蓝色字体可以点进去看原题 代码题解 #includeiostream using namespace std;#define eType double//元素类型struct SequentialTable {eType* elements;int size;int capacity; };void initailizeTable(SequentialTable* list, int capacity) {//1.初始化顺序表list-elements new eType[capacity];//elements申请内存为eType类型的内存空间相当于数组容量为capacitylist-capacity capacity;list-size 0;}void destroyTable(SequentialTable* list) {//销毁顺序表delete[] list-elements;//将elements内存空间销毁 }int getSize(SequentialTable* list) {//顺序表长度return list-size; }bool isEmpty(SequentialTable* list) {//顺序表是否为空return list-size 0; }void insertElement(SequentialTable* list,int index, eType x) {//插入元素 index为插入位置x为插入的元素if (index0 || indexlist-size) {throw std::invalid_argument(Invalid index);//插入位置非法那么抛出异常}if (list-size list-capacity) {//如果顺序表长度大于容量那就扩容int newCapacity 2 * list-capacity;//容量扩大为原来的两倍eType* newElements new eType[newCapacity];for (int i 0; i list-size; i) {newElements[i] list-elements[i];}delete[] list-elements;//释放原来内存空间list-elements newElements;list-capacity newCapacity;}for (int i list-size; i index; i--) {list-elements[i] list-elements[i - 1];}list-elements[index] x;list-size;//注意插入元素长度加一 }void deleteElement(SequentialTable* list, int index) {if (index 0 || index list-size) {throw std::invalid_argument(Invalid index);}if (list-size 0) {//如果顺序表没有元素那么进行不了删除操作抛出异常throw std::invalid_argument(Invalid index);}for (int i index; i list-size - 1; i) {list-elements[i] list-elements[i 1];}list-size--;//长度减一 }int findElement(SequentialTable* list, eType x) {//找出元素的索引for (int i 0; i list-size; i) {if (x list-elements[i])return i;}return -1;//找不到返回-1 }eType getElement(SequentialTable* list, int index) {//返回索引对应的元素if (index 0 || index list-size) {throw std::invalid_argument(Invalid index);}return list-elements[index]; }void updateElement(SequentialTable* list, int index, eType x) {//更新元素if (index 0 || index list-size) {throw std::invalid_argument(Invalid index);}list-elements[index] x; }int main() {//测试代码int n;while (cin nn) {SequentialTable s;initailizeTable(s, 1);for (int i 0; i n; i) {eType x;cin x;insertElement(s, i, x);}int pcnt 0, zcont 0, ncnt 0;for (int i 0; i s.size; i) {eType val getElement(s, i);if (val 1e-8) pcnt;else if (val -1e-8) ncnt;else zcont;}cout ncnt zcont pcnt endl;}return 0; }九、总结 综上所述顺序表是一种基于数组实现的线性数据结构具有随机访问速度快、物理存储连续等优点。然而它也存在插入和删除操作效率低、扩容操作耗时等缺点。因此在选择数据结构时需要根据具体的应用场景和需求来权衡利弊。 结语 学习编程是一个很艰难漫长的过程我们要克服一切困难学习算法本就是由易到难不会的地方就问我相信通过我们坚持不懈的努力一定能理解并熟练掌握其中细节加油我相信你一定能行。 想看更多内容可以关注我看我作品关注我让我们一起学习编程希望大家能点赞关注支持一下让我有持续更新的动力谢谢大家。
http://www.hkea.cn/news/14316479/

相关文章:

  • 东莞网站制作网站推广价钱合肥网站系统建设公司
  • 电影网站可以备案吗做网站 二维码登录
  • 做网站必须要dreamever苏州seo优化外包公司
  • 网站服务费算什么费用logo网站设计
  • 成都 网站改版带紫色箭头做网站软件
  • 大连做网站孙晓龙注册深圳公司费用
  • pc端的网站设计方案如何做自己产品网站
  • 如何查看一个网站是不是用h5做的wordpress文章衔接出错
  • 衡阳网站建设制作网站项目设计流程案例
  • 电子商务网站建设的核心是seo西安
  • wap网站建设方案 pdf网站备案 照片
  • 引流推广软件东莞网站优化公
  • dw怎么做网站跳转建设旅游网站缺点
  • 金泉网做网站推广justnews主题wordpress
  • 电子商务网站费用预算网站的工作简报怎么做
  • 做宠物网站的工作室鄂州网吧暂停营业
  • 通用企业网站模板wordpress 描述代码
  • 租号网站怎么做网站建设 意向协议书
  • 网站排名如何稳定个人网站 备案 广告
  • 网站建设价格优惠网站策划制作公司
  • 教学网站制作医院网上预约
  • 港巢网站建设优化是什么意思?
  • 阿里云万网网站网页下载链接怎么做
  • 建设人才服务信息网国家网站么多用户网站制作
  • php 商务网站开发实战做网站费用记入什么会计科目
  • PHP+MySQL网站开发全程实例北京专业制作网站公司
  • 网站做中秋专题怎么弄什么网站做海宁的房产好
  • 嘉兴做网站的哪家好做排版的网站
  • 网站怎么提高权重小学生制作ppt的软件
  • 外贸企业邮箱哪家好seogw