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

宜兴做宠物的网站哪里可以做营销型网站

宜兴做宠物的网站,哪里可以做营销型网站,电子商务网站建设的目的和作用,广州企业网站建设多少钱目录一.线性表和顺序表的概念二.顺序表的实现1.动态顺序表的创建2.初始化顺序表3.打印顺序表4.销毁顺序表5.检查容量6.头插 尾插7.头删 尾删三.使用下标插入删除1.删除指定位置2.向指定位置插入指定数一.线性表和顺序表的概念 线性表是n个具有相同特性的数据元素的有限序列。 线…

目录

  • 一.线性表和顺序表的概念
    • 二.顺序表的实现
    • 1.动态顺序表的创建
    • 2.初始化顺序表
    • 3.打印顺序表
    • 4.销毁顺序表
    • 5.检查容量
    • 6.头插 尾插
    • 7.头删 尾删
      • 三.使用下标插入删除
        • 1.删除指定位置
        • 2.向指定位置插入指定数

一.线性表和顺序表的概念

  • 线性表是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…
    线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
  • 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

二.顺序表的实现

1.动态顺序表的创建

我们先行定义一个初始容量INT_TIAL为 4.

typedef int SLDataList;
#define INT_TIAL 4
typedef struct SeqList
{SLDataList* a;int size;//现存个数int capacity;//容量
}SL;

2.初始化顺序表

先对顺序表进行功能实现前,我们需要先将初始值赋好。

void SeqInit(SL* pr)
{assert(pr);SLDataList* tmp = (SLDataList*)malloc(sizeof(SLDataList) * INT_TIAL);if (tmp == NULL){perror("malloc tmp is\n");return;}else{pr->a = tmp;}pr->size = 0;pr->capacity = INT_TIAL;
}

3.打印顺序表

void SeqPrin(SL* pr)
{assert(pr);for (int i = 0; i < pr->size; i++)printf("%d ", pr->a[i]);printf("\n");
}

4.销毁顺序表

void DisSeq(SL* pr)
{assert(pr);free(pr->a);pr->a = NULL;pr->size = 0;pr->capacity = 0;
}

5.检查容量

对顺序表所有的插入操作前都应该就检查顺序表的容量是否充足,所以应该编写检查容量函数对顺序表进行扩容。


void SeqCheckCapacity(SL* pr)
{assert(pr);if (pr->size == pr->capacity){SLDataList* tmp = (SLDataList*)realloc(pr->a, pr->capacity * sizeof(SLDataList) * 2);if (tmp == NULL){perror("realloc is\n");return;}pr->a = tmp;pr->capacity *= 2;}
}

6.头插 尾插

尾插比较简单,但是进行头插时需要进行类似memmove的操作,进行内存覆盖。


void PushBack(SL* pr)
{assert(pr);if (pr->size+1 > pr->capacity)SeqCheckCapacity(pr);else{int input;printf("输入要插入的数:>");scanf("%d", &input);pr->a[pr->size] = input;pr->size++;}
}void PushFront(SL* pr)
{assert(pr);if (pr->size+1 > pr->capacity)SeqCheckCapacity(pr);else{int input;printf("输入要插入的数:>");scanf("%d", &input);int end = pr->size-1;while (end >= 0){pr->a[end+1] = pr->a[end];end--;}pr->a[0] = input;pr->size++;}}

7.头删 尾删

void PopBack(SL* pr)
{assert(pr);assert(pr->size > 0);pr->size--;
}void PopFront(SL* pr)
{assert(pr);if (pr->size < 1)return;else{int i = 0;while (i < pr->size - 1){pr->a[i] = pr->a[i + 1];i++;}pr->size--;}
}

三.使用下标插入删除

1.删除指定位置


void SeqDel(SL* pr, int pos)
{assert(pr);assert(pos >= 0 && pos < pr->size);int end = pos + 1;while (end < pr->size){pr->a[end - 1] = pr->a[end];end++;}pr->size--;
}

2.向指定位置插入指定数


void SeaSert(SL* pr, int pos, int x)
{assert(pr);assert(pos >= 0 && pos < pr->size);if(pr->size+1>pr->capacity)SeqCheckCapacity(pr);else{int end = pr->size;while (end > pos){pr->a[end] = pr->a[end - 1];end--;}pr->a[pos] = x;pr->size++;}}

最后我们就实现了一个简单的顺序表功能,但是顺序表的缺点也非常明显:

  1. 中间头部插入删除数据,需要挪动数据,效率低下
  2. 空间不够,扩容。扩容有一定的消耗,其次还可能会有一定空间浪费

在接下来的链表的学习后,我们将会解决这个问题。

http://www.yayakq.cn/news/288275/

相关文章:

  • 公司网站建设开发iis 无法访问此网站
  • 网站不提交表单小说网站开发实录
  • 学校网站建设代码赶集网招聘
  • 网站备案 主体黑名单餐馆餐饮装修设计
  • 帝国和织梦哪个做网站好wordpress升级不了
  • 东平建设局网站软件中心下载安装
  • 网站做收录要多少长时间邢台当地网站建设
  • 普通网站和营销网站有何不同济南网站设计公司富
  • 凉山州建设网站黑龙江新闻法治在线
  • 免费注册网站流程商用图片做公司网站可以吗
  • iis新建网站无法浏览新做的网站怎样让百度收录
  • 怎么查网站的空间商备案 个人网站名称
  • 瑞安市公用建设局网站可画人物插画设计
  • 网站开发前端和后端哪个费时间平面设计提升培训中心
  • 信息化建设办公室网站鄂尔多斯seo
  • 科技广告公司网站模板网站 自建空间
  • 网站建设结课郑州不孕不育
  • 建立网站的数据表小学老师在哪个网站做ppt
  • 福建建设厅官方网站微信公众号网页怎么制作
  • 成品网站 子目录打不开嘉兴网站建设设计制作
  • 门户网站建设技术方案开发公司工程部年终工作总结及明年工作计划
  • 成都网站制作维护新站网站收录减少
  • 网站连接微信传奇网址大全
  • 济宁企业做网站怎么做坑人网站
  • 网站导航栏 字体做流量网站
  • 公司网站生成二维码网站当前位置怎么做
  • 百度收录的网站多久更新一次html5网站正在建设中模板下载
  • 393网站丹阳房产网
  • 博山做网站公司泸州小程序定制开发
  • 网站 特效都是用什么软件做的做网站赚钱要多久