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

王璞网站开发实战答案wordpress 主题 更新

王璞网站开发实战答案,wordpress 主题 更新,网页制作专业搜题,git怎么做隐私政策网站文章目录 目录1. 数据结构相关概念1.1 什么是数据结构1.2 为什么需要数据结构 2. 顺序表的概念及结构3. 顺序表分类4. 实现动态顺序表4.1 初始化4.2 顺序表的尾部插入4.3 打印顺序表4.4 顺序表的头部插入4.5 顺序表的尾部删除4.6 顺序表的头部删除4.7 指定位置之前插入数据4.8 … 文章目录 目录1. 数据结构相关概念1.1 什么是数据结构1.2 为什么需要数据结构 2. 顺序表的概念及结构3. 顺序表分类4. 实现动态顺序表4.1 初始化4.2 顺序表的尾部插入4.3 打印顺序表4.4 顺序表的头部插入4.5 顺序表的尾部删除4.6 顺序表的头部删除4.7 指定位置之前插入数据4.8 删除指定位置数据4.9 在顺序表中查找x4.10 顺序表的销毁 目录 数据结构相关概念顺序表概念及结构顺序表分类实现动态顺序表 1. 数据结构相关概念 1.1 什么是数据结构 数据结构是由“数据”和“结构”两词组合而来。 什么是数据 常见的数值1、2、3、4…、教务系统里保存的用户信息姓名、性别、年龄、学历等等、网页里肉眼可以看到的信息文字、图片、视频等等这些都是数据。 什么是结构 当我们想要大量使用同⼀类型的数据时通过手动定义大量的独立的变量对于程序来说可读性非常差我们可以借助数组这样的数据结构将⼤量的数据组织在⼀起结构也可以理解为组织数据的方式。 概念 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在⼀种或多种特定关系的数据元素的集合。数据结构反映数据的内部构成即数据由哪部分构成以什么方式构成以及数据元素之间呈现的结构。 总结 1能够存储数据如顺序表、链表等结构 2存储的数据能够方便查找 1.2 为什么需要数据结构 程序中如果不对数据进行管理可能会导致数据丢失、操作数据困难、野指针等情况。通过数据结构能够有效将数据组织和管理在⼀起。按照我们的方式任意对数据进行增删改查等操作。 最基础的数据结构数组。 【思考】有了数组为什么还要学习其他的数据结构 假定数组有10个空间已经使用了5个向数组中插入数据的步骤 求数组的长度求数组的有效数据个数向下标为数据有效个数的位置插入数据注意这里是否要判断数组是否满了满了还能继续插入吗假设数据量非常庞大频繁的获取数组有效数据个数会影响程序执行效率。 结论 最基础的数据结构能够提供的操作已经不能完全满足复杂算法实现。 2. 顺序表的概念及结构 线性表 线性表linear list是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中广泛使用的数据结构常见的线性表顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构也就说是连续的⼀条直线但是在物理结构上并不⼀定是连续的线性表在物理上存储时通常以数组和链式结构的形式存储。 顺序表 逻辑结构是线性的、物理结构是连续的。 顺序表和数组的区别 顺序表的底层结构是数组对数组的封装实现了常用的增删改查等接口。 3. 顺序表分类 静态顺序表 概念使用定长数组存储元素 //静态顺序表#define N 100typedef int SLDataType;//顺序表中数组类型不一定是整型如果要变为字符类型就可以在这里直接改如果不这样定义就要在代码中改很多次struct SeqList {SLDataType a[N];//定长数组int size;//有效数据个数 };静态顺序表缺陷空间给少了不够⽤给多了造成空间浪费 动态顺序表 //动态顺序表typedef int SLDataType;typedef struct SeqList {SLDataType* arr;//存储数据的底层结构int capacity;//记录顺序表的空间大小int size;//记录顺序表当前有效的数据个数 }SL;//typedef struct SeqList SL;4. 实现动态顺序表 4.1 初始化 void SLInit(SL* ps) {assert(ps);ps-arr NULL;ps-size ps-capacity 0; }4.2 顺序表的尾部插入 void SLCheckCapacity(SL* ps) {if (ps-size ps-capacity){int newCapacity 0 ps-capacity ? 4 : 2 * ps-capacity;SLDataType* tmp (SLDataType*)realloc(ps-arr, newCapacity * sizeof(SLDataType));if (NULL tmp){perror(realloc fail!);exit(1);}//扩容成功ps-arr tmp;ps-capacity newCapacity;} }void SLPushBack(SL* ps, SLDataType x) {//断言 -- 粗暴的解决方式//assert(ps ! NULL);assert(ps);//if判断 -- 温柔的解决方式//if (NULL ps)//{// return;//}//空间不够扩容SLCheckCapacity(ps);//空间足够直接插入ps-arr[ps-size] x;//ps-size; }注 扩容的原则成倍数的增加1.5倍、2倍 4.3 打印顺序表 void SLPrint(SL* ps) {assert(ps);for (int i 0; i ps-size; i){printf(%d , ps-arr[i]);}printf(\n); }4.4 顺序表的头部插入 void SLPushFront(SL* ps, SLDataType x) {assert(ps);//判断是否扩容SLCheckCapacity(ps);//旧数据往后挪动一位for (int i ps-size; i 0; i--){ps-arr[i] ps-arr[i - 1];}ps-arr[0] x;ps-size; }4.5 顺序表的尾部删除 void SLPopBack(SL* ps) {assert(ps);assert(ps-size);//顺序表不为空ps-size--; }4.6 顺序表的头部删除 void SLPopFront(SL* ps) {assert(ps);assert(ps-size);//不为空执行挪动操作for (int i 0; i ps-size - 1; i){ps-arr[i] ps-arr[i 1];}ps-size--; }4.7 指定位置之前插入数据 void SLInsert(SL* ps, int pos, SLDataType x) {assert(ps);assert(pos 0 pos ps-size);SLCheckCapacity(ps);//pos及之后的数据往后挪动一位,pos空出来for (int i ps-size; i pos; i--){ps-arr[i] ps-arr[i - 1];}ps-arr[pos] x;ps-size; }4.8 删除指定位置数据 void SLErase(SL* ps, int pos) {assert(ps);assert(pos 0 pos ps-size);//pos以后的数据往前挪动一位for (int i pos; i ps-size - 1; i){ps-arr[i] ps-arr[i 1];}ps-size--; }4.9 在顺序表中查找x int SLFind(SL* ps, SLDataType x) {//加上断言对代码的健壮性更好assert(ps);for (int i 0; i ps-size; i){if (x ps-arr[i]){return i;}}return -1; }4.10 顺序表的销毁 void SLDestroy(SL* ps) {assert(ps);free(ps-arr);ps-arr NULL;ps-size ps-capacity 0; } 完整代码 //SeqList.h#include stdio.h #include stdlib.h #include assert.h静态顺序表 // //#define N 100 // //typedef int SLDataType; // //struct SeqList //{ // SLDataType a[N]; // int size; //};//动态顺序表typedef int SLDataType;typedef struct SeqList {SLDataType* arr;//存储数据的底层结构int capacity;//记录顺序表的空间大小int size;//记录顺序表当前有效的数据个数 }SL;//typedef struct SeqList SL;//初始化和销毁 void SLInit(SL* ps); void SLDestroy(SL* ps); void SLPrint(SL* ps);//保持接口一致性//顺序表的头部/尾部插入 void SLPushBack(SL* ps, SLDataType x); void SLPushFront(SL* ps, SLDataType x);//顺序表的头部/尾部删除 void SLPopBack(SL* ps); void SLPopFront(SL* ps);//指定位置之前插入数据 //删除指定位置数据 void SLInsert(SL* ps, int pos, SLDataType x); void SLErase(SL* ps, int pos);int SLFind(SL* ps, SLDataType x);//SeqList.c#include SeqList.h//初始化和销毁 void SLInit(SL* ps) {assert(ps);ps-arr NULL;ps-size ps-capacity 0; }void SLCheckCapacity(SL* ps) {if (ps-size ps-capacity){int newCapacity 0 ps-capacity ? 4 : 2 * ps-capacity;SLDataType* tmp (SLDataType*)realloc(ps-arr, newCapacity * sizeof(SLDataType));if (NULL tmp){perror(realloc fail!);exit(1);}//扩容成功ps-arr tmp;ps-capacity newCapacity;} }//顺序表的头部/尾部插入 void SLPushBack(SL* ps, SLDataType x) {//断言 -- 粗暴的解决方式//assert(ps ! NULL);assert(ps);//if判断 -- 温柔的解决方式//if (NULL ps)//{// return;//}//空间不够扩容SLCheckCapacity(ps);//空间足够直接插入ps-arr[ps-size] x;//ps-size; }void SLPushFront(SL* ps, SLDataType x) {assert(ps);//判断是否扩容SLCheckCapacity(ps);//旧数据往后挪动一位for (int i ps-size; i 0; i--){ps-arr[i] ps-arr[i - 1];}ps-arr[0] x;ps-size; }//顺序表的头部/尾部删除 void SLPopBack(SL* ps) {assert(ps);assert(ps-size);//顺序表不为空ps-size--; }void SLPopFront(SL* ps) {assert(ps);assert(ps-size);//不为空执行挪动操作for (int i 0; i ps-size - 1; i){ps-arr[i] ps-arr[i 1];}ps-size--; }//指定位置之前插入数据 void SLInsert(SL* ps, int pos, SLDataType x) {assert(ps);assert(pos 0 pos ps-size);SLCheckCapacity(ps);//pos及之后的数据往后挪动一位,pos空出来for (int i ps-size; i pos; i--){ps-arr[i] ps-arr[i - 1];}ps-arr[pos] x;ps-size; }//删除指定位置数据 void SLErase(SL* ps, int pos) {assert(ps);assert(pos 0 pos ps-size);//pos以后的数据往前挪动一位for (int i pos; i ps-size - 1; i){ps-arr[i] ps-arr[i 1];}ps-size--; }//在顺序表中查找x int SLFind(SL* ps, SLDataType x) {//加上断言对代码的健壮性更好assert(ps);for (int i 0; i ps-size; i){if (x ps-arr[i]){return i;}}return -1; }void SLDestroy(SL* ps) {assert(ps);free(ps-arr);ps-arr NULL;ps-size ps-capacity 0; }void SLPrint(SL* ps) {assert(ps);for (int i 0; i ps-size; i){printf(%d , ps-arr[i]);}printf(\n); }//test.c#include SeqList.hvoid slTest01() {SL sl;SLInit(sl);//测试尾插SLPushBack(sl, 1);SLPushBack(sl, 2);SLPushBack(sl, 3);SLPushBack(sl, 4);SLPrint(sl);//SLPushBack(sl, 5);//SLPrint(sl);//SLPushBack(NULL, 6);//头插//SLPushFront(sl, 5);//SLPushFront(sl, 6);//SLPushFront(sl, 7);//SLPrint(sl);//尾删//SLPopBack(sl);//SLPopBack(sl);//SLPopBack(sl);//SLPopBack(sl);//SLPrint(sl);//头删//SLPopFront(sl);//SLPopFront(sl);//SLPopFront(sl);//SLPopFront(sl);//SLPrint(sl);//指定位置插入//SLInsert(sl, 0, 100);//SLPrint(sl);//SLInsert(sl, sl.size, 200);//SLPrint(sl);//SLInsert(sl, 100, 300);//SLPrint(sl);//删除指定位置的数据//SLErase(sl, 0);//SLPrint(sl);//SLErase(sl, sl.size - 1);//SLPrint(sl);SLErase(sl, 1);SLPrint(sl); }void slTest02() {SL sl;SLInit(sl);//测试尾插SLPushBack(sl, 1);SLPushBack(sl, 2);SLPushBack(sl, 3);SLPushBack(sl, 4);SLPrint(sl);//测试查找//int ret SLFind(sl, 3);int ret SLFind(sl, 30);if (ret 0){printf(数据不存在查找失败);}else{printf(数据找到了在下标为%d位置\n, ret);} }int main() {//slTest01();slTest02();return 0; }
http://www.hkea.cn/news/14406847/

相关文章:

  • 北京建设工程质量协会网站wordpress mu 搜索
  • 重庆网站设计中心百度联盟网站有哪些
  • 保定网站开发公司怎么选择扬中网站建设
  • 网站数据库是什么手机网页界面设计
  • wordpress抓取别人网站电商网站建设实训报告心得
  • 深圳展览设计网站建设手工制作代加工接单网
  • 音乐网站素材php网站开发工具
  • 如何选择营销网站建设dw个人网页制作素材
  • 做网站的实验报告网站编辑如何做原创
  • 有源码后怎么做网站百度收录率高的网站
  • 莘县网站建设返回链接 网站惩罚检查 错误检查
  • 自己网站做问卷调查网站定制公司哪家最权威
  • 网站建设视频讲解网站域名过期不续费
  • 互联网电商网站建设长沙官网优化推广
  • 湖北省建设厅网站证件网络营销有哪些方面
  • 快速网站排名logo设计在线生成免费免费
  • 晋州住房保障建设局网站wordpress用户集成
  • 网站制作成功后怎么使用标签云小工具 wordpress nofollow
  • 威海专业做网站公司如何作wordpress 主题
  • 郑州企业建网站制作网站判断手机跳转代码
  • 网站的手机客户端怎样做太月星网站建设程序开发
  • 怎么查看网站解析西大路网站建设公司
  • 建企业网站一般需要多少钱沧州好的做网站的公司
  • 有没有好网站推荐小米手机官方网站
  • php网站开发模式有哪些WordPress添加作者信息小工具
  • 做网站与网页有什么区别wordpress的站 做固定链接301重定向对百度的影响
  • 新化网站建设成都推广网站多少钱
  • wordpress如何建站公司网站空间
  • 中国行业网站做网站企业经营范围
  • 有哪些软件可以查企业信息石家庄高级seo经理