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

web前端就业是个坑黄冈网站seo

web前端就业是个坑,黄冈网站seo,我想克隆个网站 怎么做,手机新款上市一,概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储; 在数组上完成数据的增删查改。 1, 静态顺序表:使用定长数组存储元素。 2.,动态顺序表&#xff1…

一,概念及结构

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储;

在数组上完成数据的增删查改。

 1, 静态顺序表:使用定长数组存储元素。

2.,动态顺序表:使用动态开辟的数组存储。

 

二,接口实现

静态顺序表只适用于确定知道需要存多少数据的场景;

静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用;

所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下面我们实现动态顺序表;

        1,顺序表的创建(动态)

//动态顺序表
typedef int SLDataType;typedef struct SqList
{SLDataType* a;int size;		//存储有效数据个数int capacity;	//容量空间大小
}SL;

这里我们将数据类型暂时定为int类型,typedefSLDataType,便于我们后续对顺序表数据类型的修改;

定义属性表为SL*的指针a,有效数据个数size,现有容量capacity;

        2,接口函数

// 顺序表初始化
void SLInit(SL* ps);
// 顺序表销毁
void SLDestroy(SL* ps);
// 检查空间,如果满了,进行增容
void SLChenkCapacity(SL* ps);
//顺序表尾插
void SLPushBack(SL* ps,SLDataType x);
//顺序表尾删
void SLPopBack(SL* ps);
//顺序表头插
void SLPushFront(SL* ps, SLDataType x);
//顺序表头删
void SLPopFront(SL* ps);
//顺序表打印
void SLPrint(SL* ps);
// 顺序表查找
int SeqListFind(SL* ps, SLDataType x);
// 顺序表在pos位置插入x
void SLInsert(SL*ps, int pos, SLDataType x);
// 顺序表在pos位置删除x
void SLErase(SL*ps, int pos);

        3,初始化 

	//定义SL s1;//初始化SLInit(&s1);
// 顺序表初始化
void SLInit(SL* ps)
{assert(ps);ps->a = (SLDataType*)malloc(sizeof(SLDataType) * 4);if (ps->a== NULL){perror("malloc");exit(-1);}ps->size = 0;ps->capacity = 4;
}

首先要进行断言ps不能为空,如果ps为空则下面对ps解引用就会报错;

刚开始先给 a 申请4个SLDataType大小的空间,这个自己可以任意修改,然后对sizecapacity进行赋值;

        4,销毁

// 顺序表销毁
void SLDestroy(SL*ps)
{assert(ps);free(ps->a);ps->a = NULL;ps->size = ps->capacity = 0;
}

然后就是销毁顺序表,直接用 free 释放掉 a 即可,再置为空指针,再重置 size capacity

        5,判断是否增容

// 检查空间,如果满了,进行增容
void SLChenkCapacity(SL* ps)
{assert(ps);if (ps->size == ps->capacity){ps->a = (SLDataType*)realloc(ps->a, ps->capacity * 2 * (sizeof(SLDataType)));if (ps->a == NULL){perror("realloc");exit(-1);}ps->capacity = ps->capacity * 2;}
}

像后面如果进行尾插,头插的话就需要检查空间是否需要增容了,也很好判断,当size等于capacity时就需要增容了,我们这里是选择直接扩容一倍;

然后再更新一下capacity的值就行了;

        6,尾插

//顺序表尾插
void SLPushBack(SL* ps, SLDataType x)
{assert(ps);//检查空间SLChenkCapacity(ps);ps->a[ps->size] = x;ps->size++;
}

首先判断是否需要增容,此时size的值就是末尾的数的下标加一

直接对其下标进行赋值,再让size加一

        7,尾删

//顺序表尾删
void SLPopBack(SL* ps)
{assert(ps);//温柔的检查//if (ps->size == 0)//	return;//暴力检查assert(ps->size > 0);ps->size--;
}

这里有两种检查方式,推荐暴力检查法,要删除值,size的值必须大于0;

然后直接令size减一即可,访问不到即为删除;

          8,头插

//顺序表头插
void SLPushFront(SL* ps, SLDataType x)
{assert(ps);SLChenkCapacity(ps);int end = ps->size-1;while (end >= 0){ps->a[end + 1] = ps->a[end];end--; }ps->a[0] = x;ps->size++;
}

还是先判断是否需要增容,然后先将整体的值往后推一位;

给头赋值,令size加一;

           9,头删

//顺序表头删
void SLPopFront(SL* ps)
{assert(ps);assert(ps->size > 0);int i = 0;while (i < ps->size - 1){ps->a[i] = ps->a[i + 1];i++;}ps->size--;
}

要删除数据首先数据不能为空,要进行断言一下;

然后将整体往前推一位,再令size减一;

        10,打印

//顺序表打印
void SLPrint(SL* ps)
{assert(ps);int i = 0;for (i = 0; i < ps->size; i++){printf("%d ", ps->a[i]);}printf("\n");
}

size是数据个数,其减一就是末尾数据的下标,然后进行遍历打印即可;

        11,查找

// 顺序表查找
int SeqListFind(SL* ps, SLDataType x)
{assert(ps);int i = 0;for (i = 0; i < ps->size; i++){if (ps->a[i] == x)return i;}return -1;
}

直接遍历数组进行查找然后返回下标,没有则返回-1;

         12,指定位置进行插入

// 顺序表在pos位置插入x
void SLInsert(SL*ps, int pos, SLDataType x)
{assert(ps);assert(pos>=0 && pos <= ps->size);SLChenkCapacity(ps);int end = ps->size - 1;while (end >=pos){ps->a[end + 1] = ps->a[end];end--;}ps->a[pos] = x;ps->size++;
}

首先判断pos要大于等于0且小于等于size,是否需要增容;

然后从pos数组的值往后推一位,再对其位置重新赋值,再令size++;

         13,指定位置进行删除

// 顺序表在pos位置删除x
void SLErase(SL*ps, int pos)
{assert(ps);assert(pos >= 0 && pos < ps->size);int i = pos;while (i < ps->size - 1){ps->a[i] = ps->a[i + 1];i++;}ps->size--;
}

首先还是要判断pos的值,大于等于0小于size,因为数组下标为size是没有值的,所以pos不能等于size;

然后在pos处往前推一位,令size--;

三,源码

        1,头文件

SqList.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>//动态顺序表
typedef int SLDataType;typedef struct SqList
{SLDataType* a;int size;		//存储有效数据个数int capacity;	//容量空间大小
}SL;// 顺序表初始化
void SLInit(SL* ps);
// 顺序表销毁
void SLDestroy(SL* ps);
// 检查空间,如果满了,进行增容
void SLChenkCapacity(SL* ps);
//顺序表尾插
void SLPushBack(SL* ps,SLDataType x);
//顺序表尾删
void SLPopBack(SL* ps);
//顺序表头插
void SLPushFront(SL* ps, SLDataType x);
//顺序表头删
void SLPopFront(SL* ps);
//顺序表打印
void SLPrint(SL* ps);
// 顺序表查找
int SeqListFind(SL* ps, SLDataType x);
// 顺序表在pos位置插入x
void SLInsert(SL*ps, int pos, SLDataType x);
// 顺序表在pos位置删除x
void SLErase(SL*ps, int pos);

         2,执行文件

SqList.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"SqList.h"// 顺序表初始化
void SLInit(SL* ps)
{assert(ps);ps->a = (SLDataType*)malloc(sizeof(SLDataType) * 4);if (ps->a== NULL){perror("malloc");exit(-1);}ps->size = 0;ps->capacity = 4;
}// 顺序表销毁
void SLDestroy(SL*ps)
{assert(ps);free(ps->a);ps->a = NULL;ps->size = ps->capacity = 0;
}// 检查空间,如果满了,进行增容
void SLChenkCapacity(SL* ps)
{assert(ps);if (ps->size == ps->capacity){ps->a = (SLDataType*)realloc(ps->a, ps->capacity * 2 * (sizeof(SLDataType)));if (ps->a == NULL){perror("realloc");exit(-1);}ps->capacity = ps->capacity * 2;}
}//顺序表尾插
void SLPushBack(SL* ps, SLDataType x)
{assert(ps);//检查空间SLChenkCapacity(ps);ps->a[ps->size] = x;ps->size++;
}//顺序表尾删
void SLPopBack(SL* ps)
{assert(ps);//温柔的检查//if (ps->size == 0)//	return;//暴力检查assert(ps->size > 0);ps->size--;
}//顺序表头插
void SLPushFront(SL* ps, SLDataType x)
{assert(ps);SLChenkCapacity(ps);int end = ps->size-1;while (end >= 0){ps->a[end + 1] = ps->a[end];end--; }ps->a[0] = x;ps->size++;
}//顺序表头删
void SLPopFront(SL* ps)
{assert(ps);assert(ps->size > 0);int i = 0;while (i < ps->size - 1){ps->a[i] = ps->a[i + 1];i++;}ps->size--;
}//顺序表打印
void SLPrint(SL* ps)
{assert(ps);int i = 0;for (i = 0; i < ps->size; i++){printf("%d ", ps->a[i]);}printf("\n");
}// 顺序表查找
int SeqListFind(SL* ps, SLDataType x)
{assert(ps);int i = 0;for (i = 0; i < ps->size; i++){if (ps->a[i] == x)return i;}return -1;
}// 顺序表在pos位置插入x
void SLInsert(SL*ps, int pos, SLDataType x)
{assert(ps);assert(pos>=0 && pos <= ps->size);SLChenkCapacity(ps);int end = ps->size - 1;while (end >=pos){ps->a[end + 1] = ps->a[end];end--;}ps->a[pos] = x;ps->size++;
}// 顺序表在pos位置删除x
void SLErase(SL*ps, int pos)
{assert(ps);assert(pos >= 0 && pos < ps->size);int i = pos;while (i < ps->size - 1){ps->a[i] = ps->a[i + 1];i++;}ps->size--;
}

如有不足之处欢迎来补充交流!

完结。。。



文章转载自:
http://anguilliform.c7510.cn
http://dower.c7510.cn
http://reperforator.c7510.cn
http://pasuruan.c7510.cn
http://arsenal.c7510.cn
http://procreator.c7510.cn
http://matriarchate.c7510.cn
http://passport.c7510.cn
http://attributively.c7510.cn
http://hanefiyeh.c7510.cn
http://schoolwork.c7510.cn
http://comorin.c7510.cn
http://palatium.c7510.cn
http://declamatory.c7510.cn
http://unaccounted.c7510.cn
http://peachy.c7510.cn
http://tetroxide.c7510.cn
http://guanethidine.c7510.cn
http://pharmacal.c7510.cn
http://saxifragaceous.c7510.cn
http://poleax.c7510.cn
http://pentosane.c7510.cn
http://gustavus.c7510.cn
http://explore.c7510.cn
http://homeochromatic.c7510.cn
http://gummatous.c7510.cn
http://vasectomize.c7510.cn
http://ciq.c7510.cn
http://dhooti.c7510.cn
http://forelady.c7510.cn
http://harpsichord.c7510.cn
http://funky.c7510.cn
http://divisibility.c7510.cn
http://epitomize.c7510.cn
http://hubless.c7510.cn
http://pavonine.c7510.cn
http://corsak.c7510.cn
http://platonist.c7510.cn
http://reedy.c7510.cn
http://ringman.c7510.cn
http://tig.c7510.cn
http://columnist.c7510.cn
http://adenoids.c7510.cn
http://darken.c7510.cn
http://kts.c7510.cn
http://respectable.c7510.cn
http://knackered.c7510.cn
http://resignation.c7510.cn
http://edwardian.c7510.cn
http://twelfth.c7510.cn
http://ruffed.c7510.cn
http://mixt.c7510.cn
http://limbeck.c7510.cn
http://rapidan.c7510.cn
http://pixy.c7510.cn
http://trumeau.c7510.cn
http://gest.c7510.cn
http://parge.c7510.cn
http://tendinous.c7510.cn
http://peloria.c7510.cn
http://excited.c7510.cn
http://hebrew.c7510.cn
http://tripetalous.c7510.cn
http://response.c7510.cn
http://lemnian.c7510.cn
http://teleprocessing.c7510.cn
http://barley.c7510.cn
http://siouan.c7510.cn
http://pleb.c7510.cn
http://disport.c7510.cn
http://aboriginality.c7510.cn
http://symbiosis.c7510.cn
http://slater.c7510.cn
http://collectivise.c7510.cn
http://nitroaniline.c7510.cn
http://religionise.c7510.cn
http://forecastleman.c7510.cn
http://methodize.c7510.cn
http://alexipharmic.c7510.cn
http://stalklet.c7510.cn
http://hemodialysis.c7510.cn
http://cothurn.c7510.cn
http://calfdozer.c7510.cn
http://cicisbeism.c7510.cn
http://validation.c7510.cn
http://jumar.c7510.cn
http://flavomycin.c7510.cn
http://lwei.c7510.cn
http://theatergoer.c7510.cn
http://talcous.c7510.cn
http://unfilmed.c7510.cn
http://garble.c7510.cn
http://extralimital.c7510.cn
http://heroicomic.c7510.cn
http://foxbase.c7510.cn
http://infundibuliform.c7510.cn
http://myopia.c7510.cn
http://invidiously.c7510.cn
http://fashionist.c7510.cn
http://gemma.c7510.cn
http://www.zhongyajixie.com/news/83874.html

相关文章:

  • 重庆做网站怎么做呀今日重点新闻
  • 摄影网站建设策划完整方案营销型网站重要特点是
  • wordpress主题制作实例seo网络营销
  • 聊城做网站推广找谁营销qq下载
  • 网站开发基本流程图近期网络舆情事件热点分析
  • 银川网站设计建设百度助手下载
  • 网站建设导航栏设计现场直播的视频
  • 个人简历模板下载 免费路由优化大师官网
  • wordpress 插件 喜欢海城seo网站排名优化推广
  • 做网站的分辨率多少百度的推广广告
  • 红酒购物网站源码新闻头条最新消息今天
  • 建设银行金湾支行网站搜索引擎营销的概念及特点
  • 合肥网站定制开发公司源码之家
  • 电子商务网站建设 论文产品设计公司
  • 精湛的佛山网站设计做网络推广怎么收费
  • 刷网站排名 优帮云b2b b2c c2c o2o区别
  • 自己做头像网站长沙百度网站排名优化
  • 代办网站企业备案官网seo是什么
  • 用ps怎么做学校网站页面渠道网络
  • 如何做二手车网站百度怎么发帖子
  • 网站信息内容建设自查百度推广代理商名单
  • 北京市住房和城乡建设委员会官方网站的免费网页模板网站
  • html个人网页制作源代码seo建站教学
  • 营销型网站建设微博搜狗站长平台验证不了
  • 跨境电商网站开发公司搜索引擎优化的流程是什么
  • 网站提交百度了经常修改网站中山做网站推广公司
  • vbs做网站百度爱采购官网
  • 官网站超链接怎么做中小企业网站优化
  • 国外做网站公司能赚钱太原网站建设
  • 徐州手机网站推广公司哪家好seo业务培训