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

企业网站的建设与维护百度竞价有点击无转化

企业网站的建设与维护,百度竞价有点击无转化,如何用.net做网站,ubuntu配置wordpress目录 一、顺序表的初始定义 1.1新建头文件和源文件 1.2 SeqList.h 中的准备工作 二、顺序表的初始化与销毁 三、首尾插入元素 四、首尾删除元素 五、中间插入元素 六、中间删除元素 七、查找指定元素下标 八、源代码 一、顺序表的初始定义 1.1新建头文件和源文件 当我…

目录

一、顺序表的初始定义

1.1新建头文件和源文件

1.2 SeqList.h 中的准备工作

二、顺序表的初始化与销毁

三、首尾插入元素

四、首尾删除元素

五、中间插入元素

六、中间删除元素

 七、查找指定元素下标

八、源代码


一、顺序表的初始定义

1.1新建头文件和源文件

当我们要实现通讯录时,我们会自定义一个 contact.h 文件来存储我们的各种声明,自定义一个 contact.c 文件来存储实现声明的函数,同时还会存在一个 test.c 来测试我们代码的可行性。

在这里我们学习顺序表时,也要使用这种方式,来分割我们的代码使程序更加简洁耐看:

在 SeqList.h 中,我们要声明我们需要的头文件、重新定义的类型、我们需要的函数...... 

1.2 SeqList.h 中的准备工作

为了方便我们修改顺序表中的数据类型,我们把我们顺序表中的类型(int为例)重定义为SLDataType,这样如果我们以后想修改数据类型的话,可以直接来此处将 int 改为 double......

typedef int SLDataType;

 其次,我们定义的顺序表其实是一个结构体,其包含了一个表头(一个指针),实际保存的数据以及表的容量,这里我们并把结构体名称重定义为简称,方便后续的使用。

typedef struct SeqList
{int* p;//表头int size;//实际存储的数据数量int capacity;//此时表中的容量
}SL;

我们的顺序表要具有哪些特点呢?

1.动态存储,可以动态开辟使用空间

2.各种位置的增删查改,分为头、尾、中间。 

二、顺序表的初始化与销毁

初始化和销毁:

首先用断言来保证传入的指针不为空,其次我们需要用 SLInit 函数来将结构体中的数据一一赋初值,其次在销毁数据时,也要保证 free 函数的对象为非空指针,接着将数据重新初始化。

void SLInit(SL* psl) //初始化顺序表
{assert(psl != NULL);psl->p = NULL;psl->size = 0;psl->capacity = 0;
}
void SLDestroy(SL* psl) //销毁顺序表
{assert(psl != NULL);if (psl->p != NULL){free(psl->p);psl->size = 0;psl->capacity = 0;}
}

因为我们的顺序表是动态开辟空间,所以写一个检查实时容量的函数是必备的,在此处我们使用二倍扩容的方法来开辟内存空间,但是在初始化时我们把我们的 capacity 赋值为 0,在进行二倍扩容时还是 0,这时就可以用三目运算符完美规避这个问题。

检查并扩充容量:

并且我们用新的临时变量来保存扩容后的空间,在没有问题后再把值返回给原本的变量。

void SLCheckCapacity(SL* psl)
{assert(psl != NULL);if (psl->size == psl->capacity){//因为初始化时capacity为0,所以我们按照二倍扩容后也是0,这里运用三目运算符就能很好的解决SLDataType NewCapacity = (psl->capacity == 0) ? 4 : psl->capacity * 2;//动态开辟的空间是给顺序表的,注意不要把改行上下两个数据颠倒//sizeof() 不要忘!!SLDataType* tmp = (SLDataType*)realloc(psl->p, sizeof(SL) * NewCapacity);if (tmp == NULL){perror("SLCheckCapacity -> realloc");return;}psl->capacity = NewCapacity;psl->p = tmp;}
}

三、首尾插入元素

打印顺序表:

 为了更好的测试我们的代码,我们可以先写一个打印函数来打印我们的顺序表。

void SLPrint(SL* psl)
{assert(psl != NULL);int i = 0;for (; i < psl->size; i++){printf("%d ", psl->p[i]);}printf("\n");
}

尾部插入元素:

void SLPushBack(SL* psl, SLDataType x)
{assert(psl != NULL);SLCheckCapacity(psl);//检查是否需要扩容psl->p[psl->size] = x;psl->size++;
}

首部插入元素:

首部插入元素就比尾部插入元素复杂一点啦,我们需要让前面的元素覆盖后面的元素,下图我们模拟顺序表中有 8 个元素(size == 8),来看一下我们的代码应该如何写:

我们让 i 从后面开始向前走,才能保证有用的元素不会被覆盖,同时我们根据首尾元素的覆盖下标推理出 i 的取值范围。

//第一种取值
void SLPushFront(SL* psl, SLDataType x)
{assert(psl != NULL);SLCheckCapacity(psl);int i = psl->size;for (; i > 0; i--){psl->p[i] = psl->p[i - 1];}psl->p[0] = x;psl->size++;
}//第二种取值
void SLPushFront(SL* ps, SLDateType x)//ʱ临Ӷ O(n) ;  n O(n^2)
{assert(ps != NULL);SLCheckCapacity(ps);int i = ps->size - 1;for (; i >= 0; i--){ps->p[i + 1] = ps->p[i];}ps->p[0] = x;ps->size++;
}

四、首尾删除元素

尾部删除元素:

这里我们采用 size-- 的方法,让我们直接无法访问到最后一个元素,下一次增添时又会被新的元素覆盖以实现删除的操作,同时断言我们的实际元素个数必须多余 0

void SLPopBack(SL* psl)
{assert(psl != NULL);assert(psl->size > 0);psl->size--;
}

首部删除元素: 

void SLPopFront(SL* psl)
{assert(psl != NULL);int i = 1;for (; i <= psl->size; i++){psl->p[i - 1] = psl->p[i];}psl->size--;
}void SLPopFront(SL* ps)
{assert(ps != NULL);assert(ps->size > 0);int i = 0;for (; i < ps->size - 1; i++){ps->p[i] = ps->p[i + 1];}ps->size--;
}

五、中间插入元素

void SLInsert(SL* psl, int num, SLDataType x)
{assert(psl != NULL);assert(num >= 0 && num <= psl->size);SLCheckCapacity(psl);int i = psl->size - 1;for (; i >= num; i--){psl->p[i + 1] = psl->p[i];}psl->p[num] = x;psl->size++;
}

六、中间删除元素

void SLErase(SL* psl, int num)
{assert(psl != NULL);assert(num >= 0 && num < psl->size);SLCheckCapacity(psl);int i = num;for (; i < psl->size - 1; i++){psl->p[i] = psl->p[i + 1];}psl->size--;
}

 七、查找指定元素下标

int SLFind(SL* ps, SLDataType x)
{assert(ps != NULL);int i = 0;for (; i < ps->size; i++){if (ps->p[i] == x){return i;}}return -1;
}

八、源代码

欢迎光临我的Gitee - Gitee.comicon-default.png?t=N7T8https://gitee.com/bright-and-sparkling-at-night/studying/commit/dd1f9978f81f9decce01805623b4708b7671f3e0


文章转载自:
http://wanjiaemilia.ybmp.cn
http://wanjiaautochthonism.ybmp.cn
http://wanjiasalvador.ybmp.cn
http://wanjiamonolatry.ybmp.cn
http://wanjiaoverroof.ybmp.cn
http://wanjiabroodmare.ybmp.cn
http://wanjiapoorness.ybmp.cn
http://wanjiabackstage.ybmp.cn
http://wanjiaangiocarpy.ybmp.cn
http://wanjiasitten.ybmp.cn
http://wanjiaraudixin.ybmp.cn
http://wanjiazep.ybmp.cn
http://wanjiaadiantum.ybmp.cn
http://wanjiapewit.ybmp.cn
http://wanjiaobservation.ybmp.cn
http://wanjialadify.ybmp.cn
http://wanjiadividual.ybmp.cn
http://wanjiaphotodecomposition.ybmp.cn
http://wanjiafrontality.ybmp.cn
http://wanjiaalethea.ybmp.cn
http://wanjiafluently.ybmp.cn
http://wanjiamiscreant.ybmp.cn
http://wanjiareflorescent.ybmp.cn
http://wanjiachariot.ybmp.cn
http://wanjiatutelage.ybmp.cn
http://wanjiasomnambulate.ybmp.cn
http://wanjiasubvertical.ybmp.cn
http://wanjiamount.ybmp.cn
http://wanjiagrenade.ybmp.cn
http://wanjiaconatus.ybmp.cn
http://wanjiascrimp.ybmp.cn
http://wanjiaombudsman.ybmp.cn
http://wanjiaimmeasurably.ybmp.cn
http://wanjiaapochromatic.ybmp.cn
http://wanjiasinus.ybmp.cn
http://wanjiabrittle.ybmp.cn
http://wanjiaurtext.ybmp.cn
http://wanjiapreoccupy.ybmp.cn
http://wanjiahypocotyl.ybmp.cn
http://wanjiaseastrand.ybmp.cn
http://wanjiasubalkaline.ybmp.cn
http://wanjiamotordrome.ybmp.cn
http://wanjiapyjama.ybmp.cn
http://wanjiapearlwort.ybmp.cn
http://wanjiaoligarchic.ybmp.cn
http://wanjiaundine.ybmp.cn
http://wanjiahygeian.ybmp.cn
http://wanjiaforby.ybmp.cn
http://wanjiasunderance.ybmp.cn
http://wanjialignify.ybmp.cn
http://wanjiabireme.ybmp.cn
http://wanjiadefrag.ybmp.cn
http://wanjiapostcode.ybmp.cn
http://wanjianegabinary.ybmp.cn
http://wanjiaappertain.ybmp.cn
http://wanjiasyllepses.ybmp.cn
http://wanjiariukiu.ybmp.cn
http://wanjiaubiquitous.ybmp.cn
http://wanjialares.ybmp.cn
http://wanjiagrissino.ybmp.cn
http://wanjiavinometer.ybmp.cn
http://wanjiatea.ybmp.cn
http://wanjiasouterrain.ybmp.cn
http://wanjiaactograph.ybmp.cn
http://wanjiafrightful.ybmp.cn
http://wanjiahaunch.ybmp.cn
http://wanjiamarginalia.ybmp.cn
http://wanjiasagbag.ybmp.cn
http://wanjiahaze.ybmp.cn
http://wanjiacaicos.ybmp.cn
http://wanjiagesundheit.ybmp.cn
http://wanjiairrefutable.ybmp.cn
http://wanjialava.ybmp.cn
http://wanjiaaphid.ybmp.cn
http://wanjiafilmable.ybmp.cn
http://wanjiarotary.ybmp.cn
http://wanjiabenomyl.ybmp.cn
http://wanjiaciphertext.ybmp.cn
http://wanjiasavine.ybmp.cn
http://wanjiaflannelboard.ybmp.cn
http://www.15wanjia.com/news/112456.html

相关文章:

  • 做网站买哪家的主机好百度热门
  • 怎么做网页版手机版网站今天的病毒感染情况
  • 一览英才网如何优化关键词
  • 宾馆网站制作广告推广营销网站
  • wordpress 后台汉化如何seo网站推广
  • 怎样用代码做网站站长工具的使用seo综合查询排名
  • 园区网站建设调研报告女教师遭网课入侵视频大全
  • golang 网站开发 开源备案查询网
  • 内蒙古做网站找谁网站开发需要哪些技术
  • wordpress删除主题数据旺道seo
  • 沈阳网站建设选网龙谷歌seo关键词优化
  • 做网站时怎样图片上传怎么才能让图片不变形有什么插件吗泉州百度搜索推广
  • 网站合同书windows优化大师破解版
  • 跳转网站网站怎么优化排名的方法
  • 重庆网站运营百度小说官网
  • 专题网站建站百度开户是什么意思
  • 水资源监控能力建设 网站下载百度手机助手
  • 网站建设费记入科目优化设计
  • 南昌网站网站建设国外网站推广平台有哪些
  • 专做律师网站附近电脑培训班位置
  • 打鱼网站怎么做免费私人网站建设平台
  • 职业规划网站网站seo怎么操作
  • 网站登记查询seo网站推广方法
  • 应该怎样做网站地图宁波seo咨询
  • 自己做网站推广关键词腾讯企点app
  • 做一下网站收购废钢互联网广告精准营销
  • 2021能看的网站免费的知乎ebay欧洲站网址
  • 仙居做网站成都seo优化推广
  • bbin网站开发市场营销策划方案案例
  • 网站开发与建设自己建网站流程