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

公安局备案网站微博推广价格表

公安局备案网站,微博推广价格表,成都网站seo收费标准,wordpress 淘宝客 api目录 线性表 顺序表 概念与结构 分类 静态顺序表 动态顺序表 动态顺序表的实现 线性表 线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表,链表,栈,队…

目录

线性表

顺序表

概念与结构

分类

静态顺序表

 动态顺序表

动态顺序表的实现


线性表

线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表,链表,栈,队列,字符串.......

线性表在逻辑上是线性结构,也就是说是连续的一条直线。 但是在物理结构上并不一定是连续的,线性表在物理上储存时,通常以数组和链表的形式存储。

顺序表

概念与结构

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

 顺序表

顺序表和数组的区别?

顺序表的底层结构是数组,对数组的封装,实现了常用的增删查改等接口。

分类

静态顺序表

概念:使用定长数组存储元素

#include<stdio.h>
#define N 7;
typedef int SLdatatype;
struct Seqlist
{SLdatatype a[N];//定长数组int size;       //有效数据个数
};

静态顺序表缺陷:空间少了不够用,给多了造成空间浪费。 

 动态顺序表

#include<stdio.h>
typedef int SLdatatype;
typedef struct Seqlist
{//动态顺序表--按需申请SLdatatype* arr;int size;	 //有效数据个数int capacity;//空间容量
}SL;

动态顺序表的实现

//初始化和销毁
void SeqListInit(SeqList* ps)
{ps->a = NULL;ps->size = ps->capacity = 0;
}
void SeqListDestroy(SeqList* ps)
{if(ps->a)free(ps->a);ps->a = NULL;ps->size = ps->capacity = 0;
}
//尾插
void SeqListPushBack(SeqList* ps, SLDateType x)
{	//空间不足时,扩容if (ps->size == ps->capacity){	//当capacity==0时int newcapacity=ps->capacity==0 ? 4 : 2 * (ps->capacity);SLDateType* tmp =(SLDateType*) realloc(ps->a, newcapacity *sizeof(SLDateType));//申请失败时if (tmp == NULL){perror("realloc fail!");exit(1);}ps->a = tmp;ps->capacity = newcapacity;}//当空间充足时ps->a[ps->size] = x;++ps->size;
}

由于后面的很多情况我们都要检查空间是否满了,所以我们直接把检查空间满了的程序提成一个函数

/检查空间是否足够
void checkifenough(SeqList* ps)
{		//空间不足时,扩容if (ps->size == ps->capacity){	//当capacity==0时int newcapacity = ps->capacity == 0 ? 4 : 2 * (ps->capacity);SLDateType* tmp = (SLDateType*)realloc(ps->a, newcapacity * sizeof(SLDateType));//申请失败时if (tmp == NULL){perror("realloc fail!");exit(1);}ps->a = tmp;ps->capacity = newcapacity;}
}

尾插就可以改进成

//尾插
void SeqListPushBack(SeqList* ps, SLDateType x)
{	assert(ps);checkifenough(ps);//当空间充足时ps->a[ps->size] = x;++ps->size;
}

时间复杂度O(1)

//头插
void SeqListPushFront(SeqList* ps, SLDateType x)
{assert(ps);checkifenough(ps);for (int i = ps->size; i >= 1; i--){ps->a[i] = ps->a[i-1];}ps->a[0] = x;(ps->size)++;
}

时间复杂度O(n)

//头删
void SeqListPopFront(SeqList* ps)
{assert(ps&&ps->a);//顺序表不能为空for (int i = 0; i < (ps->size - 1); i++){ps->a[i] = ps->a[i + 1];}(ps->size)--;
}

时间复杂度O(n) 

//尾删
void SeqListPopBack(SeqList* ps)
{assert(ps && ps->a);//顺序表不能为空(ps->size)--;
}

 时间复杂度O(1)

//查找,找到了返回下标,没找到,返回-1
int SeqListFind(SeqList* ps, SLDateType x)
{assert(ps && ps->a);for (int i = 0; i < ps->size; i++){if (ps->a[i] == x)return i;}return -1;
}
//顺序表在pos位置前插入x
void SeqListInsert(SeqList* ps, int pos, SLDateType x)
{assert(ps);assert(pos >= 0 && pos <= ps->size);checkifenough(ps);for (int i = ps->size; i >= pos + 1; i--){ps->a[i] = ps->a[i - 1];}ps->a[pos] = x;ps->size++;
}
// 顺序表删除pos位置的值
void SeqListErase(SeqList* ps, int pos)
{assert(ps && ps->a);assert(pos >= 0 && pos <ps->size);for(int i=pos;i<ps->size-1;i++){ps->a[i] = ps->a[i + 1];}ps->size--;
}

http://www.dtcms.com/wzjs/308033.html

相关文章:

  • 网站建设是自学好还是拼多多关键词排名查询软件
  • 互联网行业前景分析北京seo邢云涛
  • 运城网站建设运城天气凡科建站多少钱
  • 北京网站制作建设关键词排名优化教程
  • 网站建设搭建公司安徽关键词seo
  • 衡水网站建设怎么做友情链接交换网址大全
  • 成都网站建设外包业务企业网站seo点击软件
  • laravel 和wordpress优化大师安卓版
  • 台州外贸网站企业网站建设目标
  • 做企业网站的多少钱上海职业技能培训机构
  • 免费网站建设免代码外贸seo网站推广
  • 河南 医院 网站建设seo自动优化软件
  • 天津百度做网站多少钱深圳外贸网络推广
  • 平面设计接单平台app网站优化设计公司
  • 做阀门网站电话佛山优化网站关键词
  • 做网站的钱付款用途写什么2345网址导航下载桌面
  • 域名新闻网站兰州网络推广与营销
  • 做自己的网站要多久百度识图在线识图
  • 怎么用ps做网站上的产品图哪个平台做推广效果好
  • 网站开发常用png专业恶意点击软件
  • 房地产网站怎样建设才能快速盈利同城推广有什么平台
  • 为什么做网站系统优化软件哪个最好的
  • 百度上能收到的企业名称网站怎么做百度云盘网页登录入口
  • 做网站怎么赚钱长春建站服务
  • 制作网站学什么软件外链发布软件
  • 国内永久免费crm系统网站推荐大全四川seo多少钱
  • 三九手机网手机响应式网站模版官方百度app下载
  • 注册网站怎么做网站国外搜索网站排名
  • 建站流程网站上线竞价推广课程
  • 官方网站建设情况说明百度销售推广