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

北京购物网站建设建同城购物网站经历

北京购物网站建设,建同城购物网站经历,模块式网站制作,网站全能空间目录 一、概念 1、静态顺序表#xff1a;使用定长数组存储元素。 2、动态顺序表#xff1a;使用动态开辟的数组存储 二、接口实现 1、对顺序表的初始化 2、对数据的销毁 3、对数据的打印 4、检查是否需要扩容 5、尾插 6、头插 7、尾删 8、头删 9、在pos位置插入x …目录 一、概念 1、静态顺序表使用定长数组存储元素。 2、动态顺序表使用动态开辟的数组存储 二、接口实现 1、对顺序表的初始化 2、对数据的销毁 3、对数据的打印 4、检查是否需要扩容 5、尾插 6、头插 7、尾删 8、头删 9、在pos位置插入x 10、在pos位置处删除x 心得 一、概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构一般情况下采用数组存储。在数组上完成数据的增删查改。 顺序表一般分为 1、静态顺序表使用定长数组存储元素。 2、动态顺序表使用动态开辟的数组存储 我们一般使用动态顺序表因为静态顺序表的数组大小固定的而动态可以根据我们需求的不同去在线扩容所以接下来的文章围绕如何实现动态顺序表来讲解。 二、接口实现 对数据结构我们一般采用增删查改去实现。 #pragma once#include stdio.h #include assert.h #include stdlib.h #includestring.htypedef int SLDateType; typedef struct SeqList {SLDateType* a;int size;//存储有效数据的大小int capacity;//空间大小 }SeqList;// 对数据的管理:增删查改 void SeqListInit(SeqList* ps); void SeqListDestroy(SeqList* ps);void SeqListPrint(SeqList* ps); void SeqListPushBack(SeqList* ps, SLDateType x);//尾插 void SeqListPushFront(SeqList* ps, SLDateType x);//头插 void SeqListPopFront(SeqList* ps);//头删 void SeqListPopBack(SeqList* ps);//尾删 void SeqListCheckCapacity(SeqList* ps);//检查是否需要扩容 // 顺序表查找 int SeqListFind(SeqList* ps, SLDateType x); // 顺序表在pos位置插入x void SeqListInsert(SeqList* ps, int pos, SLDateType x); // 顺序表删除pos位置的值 void SeqListErase(SeqList* ps, int pos); //修改特定位置的值 void SeqListModify(SeqList* ps, int pos,int value); 1、对顺序表的初始化 void SeqListInit(SeqList* ps) {ps-a (SLDateType*)malloc(sizeof(SLDateType) * 4);if (ps-a NULL)//需要检查动态开辟内存是否开辟成功{perror(malloc);exit(-1);//直接程序退出因为空间都开辟失败后面没法写}ps-size 0;ps-capacity 4; } 2、对数据的销毁 因为我们是动态开辟的内存最后肯定是需要free释放。 void SeqListDestroy(SeqList* ps) {free(ps-a);ps-a NULL;ps-size 0;ps-capacity 0; }3、对数据的打印 因为我们时刻要检查每一部分代码的正确性需要数据检验所以需要专门一个打印函数 void SeqListPrint(SeqList* ps) {for (int i0;ips-size;i){printf(%d , ps-a[i]);} }4、检查是否需要扩容 因为动态内存每当我们插入新的数据时总需要将存储有效数据的大小增加当我们开辟的空间不够时就需要扩容利用realloc函数的性质。 void SeqListCheckCapacity(SeqList* ps) {if (ps-size ps-capacity){SLDateType* tmp (SLDateType*)realloc(ps-a, ps-capacity * 2 * sizeof(SLDateType));//注意动态内存开辟的单位都是字节if (tmp NULL){perror(realloc);exit(-1);}ps-a tmp;ps-capacity * 2;} } 5、尾插 void SeqListPushBack(SeqList* ps, SLDateType x) {//先考虑空间大小够不够需不需要扩容SeqListCheckCapacity(ps);ps-a[ps-size] x;ps-size; } 6、头插 头插还需要用memmove函数去挪动数据 void SeqListPushFront(SeqList* ps, SLDateType x) {//也需要考虑扩容的问题SeqListCheckCapacity(ps);memmove(ps-a 1, ps-a, ps-size*sizeof(SLDateType));ps-size;ps-a[0] x; }7、尾删 我们需要检查size是否已经小于0防止数组的越界一般用assert去暴力的检查 void SeqListPopBack(SeqList* ps) {assert(ps-size 0);//暴力的检查/*if (ps-size 0)return;*///温柔的检查ps-size--; } 8、头删 void SeqListPopFront(SeqList* ps) {assert(ps-size 0);memmove(ps-a, ps-a 1, ps-size* sizeof(SLDateType));ps-size--; } 9、在pos位置插入x void SeqListInsert(SeqList* ps, int pos, SLDateType x) {SeqListCheckCapacity(ps);assert(pos 0 pos ps-size);memmove(ps-apos 1, ps-apos, sizeof(SLDateType)*(ps-size-pos));ps-a[pos] x;ps-size; } 10、在pos位置处删除x void SeqListErase(SeqList* ps, int pos) {assert(ps-size 0);memmove(ps-a pos, ps-a pos 1,sizeof(SLDateType)*(ps-size-pos-1));ps-size--; } 心得 顺序表开启了数据结构的的序章顺序表算是很简单的数据结构了从此我们需要敲一部分代码编译一次不能一股脑的输出结果编译发现好多个bug需要写一部分编译一部分这样才更加的有持续性。
http://www.tj-hxxt.cn/news/229357.html

相关文章:

  • 电商网站如何备案wordpress ftp存储
  • 湛江电气建站软件网站首页开发收费
  • 玉溪市建设厅官方网站网站备案IP与空间
  • 淘宝客网站建设教程梅县区住房和城市建设局网站
  • 百度助手官网企业优化网站
  • 开发网站用什么语言如何在阿里云自主建网站
  • 5000个网站资源做外链外贸网店
  • 网站优化公司排名深圳深圳网络营销公司
  • 泾川网站城镇建设规化图烟台市建设局网站
  • 网站建设如何入账如何做网站ppt
  • 贵阳网站开发外包公司代刷网网站怎么做
  • 企业网站pc优化淘客推广计划
  • 3d建模怎么做网站旋转快捷的网站建设排行榜
  • 商务网站建设毕业设计模板网站建设实践试卷
  • 东莞一站式网站建设广告联盟
  • 网站制作网站做网怎样选择网站建设
  • 建设外贸网站公司青岛百度网站排名优化
  • 花生壳可以做网站吗计算机初学者入门教程
  • 肃宁县做网站自己做自媒体在哪个网站比较好
  • 做网站的工作记录网站开发项目经理
  • 溧阳 招网站开发东莞网站免费制作
  • 网站开发 网页设计北京师范大学出版社快速做网站教程
  • 怎么做网站外贸123上网
  • 郑州集团网站建设哪家好2019年做网站还有机会吗
  • wordpress建站准备网络广告推广是怎么做的
  • 茶叶包装设计成都抖音seo
  • 胶州做网站的不是搜索网站的是
  • 企业网站建设合同一个网站多个域名的seo优化
  • 有没有专门的销售公司海外seo
  • 物流网站设计与实现专业做网站企业