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

网站建设综合训练南宁百度关键词推广

网站建设综合训练,南宁百度关键词推广,vs做网站mvc,中国建设银行网站-公司机构客户目录 1. 线性表 2. 顺序表 2.1 动态顺序表 3. 接口实现 前期工作 3.1 初始化、销毁与检查容量 3.1.1 初始化 3.1.2 销毁 3.1.3 检查容量 3.2 尾插 3.3 尾删 3.4 头插 3.5 头删 3.6 插入 3.7 删除 顺序表源码 SeqList.h SeqList.c test.c 写在最后&#xff…

目录

1. 线性表

2. 顺序表

2.1 动态顺序表

3. 接口实现

前期工作

3.1 初始化、销毁与检查容量

3.1.1 初始化

3.1.2 销毁

3.1.3 检查容量

3.2 尾插

3.3 尾删

3.4 头插

3.5 头删

3.6 插入

3.7 删除

顺序表源码

SeqList.h

SeqList.c

test.c

写在最后:


1. 线性表

线性表是n个具有相同特性的数据元素的有限序列,

常见的线性表:顺序表、链表、栈、队列、字符串等等。

2. 顺序表

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

2.1 动态顺序表

我们一般使用的都是动态的顺序表。

3. 接口实现

前期工作

在VS上建三个工程文件,

test.c用来测试顺序表;

SeqList.c用来实现接口;

SeqList.h用来包头文件,和创建动态顺序表的基本结构;

头文件如下:

#pragma once#include <stdio.h>
#include <stdlib.h>
#include <assert.h>#define INIT_CAPACITY 4//选择需要的类型
typedef int SLDatatype;//动态的顺序表
typedef struct SeqList
{SLDatatype* a;int size;	  //有效的数据个数int capacity; //顺序表的空间容量
}SL;//顺序表的增删查改://初始化顺序表
void SeqInit(SL* s);//销毁顺序表
void SeqDestory(SL* s);//打印顺序表
void SeqPrint(SL* s);//检查容量
void CheckCapacity(SL* s);//尾插
void SeqPushBack(SL* s, SLDatatype x);//尾删
void SeqPopBack(SL* s);//头插
void SeqPushFront(SL* s, SLDatatype x);//头删
void SeqPopFront(SL* s);//插入
void SeqInsert(SL* s, int pos, SLDatatype x);//删除
void SeqErase(SL* s, int pos);

3.1 初始化、销毁与检查容量

接口如下:

3.1.1 初始化

//初始化顺序表
void SeqInit(SL* ps)
{//结构体指针不能为空assert(ps);//开辟空间ps->a = (SLDatatype*)malloc(sizeof(SLDatatype) * INIT_CAPACITY);//检查if (ps->a == NULL){perror("malloc fail");}ps->size = 0;ps->capacity = INIT_CAPACITY;
}

3.1.2 销毁

//销毁顺序表
void SeqDestory(SL* ps)
{//结构体指针不能为空assert(ps);//释放并置空free(ps->a);ps->a = NULL;ps->capacity = ps->size = 0;
}

3.1.3 检查容量

//检查容量
void CheckCapacity(SL* ps)
{//结构体指针不能为空assert(ps);if (ps->size == ps->capacity){//增容(两倍)SLDatatype* tmp = (SLDatatype*)realloc(ps->a, sizeof(SLDatatype) * ps->capacity * 2);//检查是否增容成功if (tmp == NULL){perror("realloc fail");return;}ps->a = tmp;ps->capacity *= 2;}
}

3.2 尾插

//尾插
void SeqPushBack(SL* ps, SLDatatype x)
{//代码复用SeqInsert(ps, ps->size, x);/*单独实现//结构体指针不能为空assert(ps);//检查容量CheckCapacity(ps);//尾插ps->a[ps->size++] = x;*/
}

3.3 尾删

//尾删
void SeqPopBack(SL* ps)
{//代码复用SeqErase(ps, ps->size - 1);/*单独实现//结构体指针不能为空assert(ps);//检查顺序表是否为空assert(ps->size);//尾删ps->size--;*/
}

3.4 头插

//头插
void SeqPushFront(SL* ps, SLDatatype x)
{//代码复用SeqInsert(ps, 0, x);/*单独实现//结构体指针不能为空assert(ps);//检查容量CheckCapacity(ps);//把值往后挪int end = ps->size - 1;while (end >= 0){ps->a[end + 1] = ps->a[end];end--;}//头插ps->a[0] = x;ps->size++;*/
}

3.5 头删

//头删
void SeqPopFront(SL* ps)
{//代码复用SeqErase(ps, 0);/*单独实现//结构体指针不能为空assert(ps);//当顺序表为零时就不能删了assert(ps->size);//将数据往前覆盖int begin = 1;while (begin < ps->size){ps->a[begin - 1] = ps->a[begin];begin++;}ps->size--;*/
}

3.6 插入

//插入
void SeqInsert(SL* ps, int pos, SLDatatype x)
{//结构体指针不能为空assert(ps);//pos需要在有数据的区间assert(pos >= 0 && pos <= ps->size);//检查容量CheckCapacity(ps);//往后挪动数据int end = ps->size - 1;while (end >= pos){ps->a[end + 1] = ps->a[end];end--;}//插入数据ps->a[pos] = x;ps->size++;
}

3.7 删除

//删除
void SeqErase(SL* ps, int pos)
{//结构体指针不能为空assert(ps);//pos需要在有数据的区间assert(pos >= 0 && pos < ps->size);//挪动数据int begin = pos + 1;while (begin < ps->size){ps->a[begin - 1] = ps->a[begin];begin++;}ps->size--;
}

我们发现,

其实顺序表核心的功能就是插入和删除,

只要我们完成这两个接口,

其他的接口的实现都是大同小异。

顺序表源码

SeqList.h

#pragma once#include <stdio.h>
#include <stdlib.h>
#include <assert.h>#define INIT_CAPACITY 4//选择需要的类型
typedef int SLDatatype;//动态的顺序表
typedef struct SeqList
{SLDatatype* a;int size;	  //有效的数据个数int capacity; //顺序表的空间容量
}SL;//顺序表的增删查改://初始化顺序表
void SeqInit(SL* s);//销毁顺序表
void SeqDestory(SL* s);//打印顺序表
void SeqPrint(SL* s);//检查容量
void CheckCapacity(SL* s);//尾插
void SeqPushBack(SL* s, SLDatatype x);//尾删
void SeqPopBack(SL* s);//头插
void SeqPushFront(SL* s, SLDatatype x);//头删
void SeqPopFront(SL* s);//插入
void SeqInsert(SL* s, int pos, SLDatatype x);//删除
void SeqErase(SL* s, int pos);

SeqList.c

#define _CRT_SECURE_NO_WARNINGS 1#include "SeqList.h"//初始化顺序表
void SeqInit(SL* ps)
{//结构体指针不能为空assert(ps);//开辟空间ps->a = (SLDatatype*)malloc(sizeof(SLDatatype) * INIT_CAPACITY);//检查if (ps->a == NULL){perror("malloc fail");}ps->size = 0;ps->capacity = INIT_CAPACITY;
}//销毁顺序表
void SeqDestory(SL* ps)
{//结构体指针不能为空assert(ps);//释放并置空free(ps->a);ps->a = NULL;ps->capacity = ps->size = 0;
}//打印
void SeqPrint(SL* ps)
{//结构体指针不能为空assert(ps);//遍历打印for (int i = 0; i < ps->size; i++){printf("%d ", ps->a[i]); }printf("\n");
}//检查容量
void CheckCapacity(SL* ps)
{//结构体指针不能为空assert(ps);if (ps->size == ps->capacity){//增容(两倍)SLDatatype* tmp = (SLDatatype*)realloc(ps->a, sizeof(SLDatatype) * ps->capacity * 2);//检查是否增容成功if (tmp == NULL){perror("realloc fail");return;}ps->a = tmp;ps->capacity *= 2;}
}//尾插
void SeqPushBack(SL* ps, SLDatatype x)
{//代码复用SeqInsert(ps, ps->size, x);/*单独实现//结构体指针不能为空assert(ps);//检查容量CheckCapacity(ps);//尾插ps->a[ps->size++] = x;*/
}//尾删
void SeqPopBack(SL* ps)
{//代码复用SeqErase(ps, ps->size - 1);/*单独实现* //结构体指针不能为空assert(ps);//检查顺序表是否为空assert(ps->size);//尾删ps->size--;*/
}//头插
void SeqPushFront(SL* ps, SLDatatype x)
{//代码复用SeqInsert(ps, 0, x);/*单独实现//结构体指针不能为空assert(ps);//检查容量CheckCapacity(ps);//把值往后挪int end = ps->size - 1;while (end >= 0){ps->a[end + 1] = ps->a[end];end--;}//头插ps->a[0] = x;ps->size++;*/
}//头删
void SeqPopFront(SL* ps)
{//代码复用SeqErase(ps, 0);/*单独实现//结构体指针不能为空assert(ps);//当顺序表为零时就不能删了assert(ps->size);//将数据往前覆盖int begin = 1;while (begin < ps->size){ps->a[begin - 1] = ps->a[begin];begin++;}ps->size--;*/
}//插入
void SeqInsert(SL* ps, int pos, SLDatatype x)
{//结构体指针不能为空assert(ps);//pos需要在有数据的区间assert(pos >= 0 && pos <= ps->size);//检查容量CheckCapacity(ps);//往后挪动数据int end = ps->size - 1;while (end >= pos){ps->a[end + 1] = ps->a[end];end--;}//插入数据ps->a[pos] = x;ps->size++;
}//删除
void SeqErase(SL* ps, int pos)
{//结构体指针不能为空assert(ps);//pos需要在有数据的区间assert(pos >= 0 && pos < ps->size);//挪动数据int begin = pos + 1;while (begin < ps->size){ps->a[begin - 1] = ps->a[begin];begin++;}ps->size--;
}

test.c

#define _CRT_SECURE_NO_WARNINGS 1#include "SeqList.h"//测试接口
void SLTest()
{SL s;SeqInit(&s);SeqPushBack(&s, 1);SeqPushBack(&s, 2);SeqPushBack(&s, 3);SeqPushBack(&s, 4);SeqPushBack(&s, 5);SeqPushBack(&s, 6);SeqPrint(&s);SeqPopBack(&s);SeqPopBack(&s);SeqPrint(&s);SeqPushFront(&s, 10);SeqPushFront(&s, 50);SeqPrint(&s);SeqPopFront(&s);SeqPopFront(&s);SeqPopFront(&s);SeqPrint(&s);SeqDestory(&s);
}int main()
{SLTest();return 0;
}

测试结果无误。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。


文章转载自:
http://cyclization.c7512.cn
http://areostyle.c7512.cn
http://incunabulist.c7512.cn
http://diatomite.c7512.cn
http://tail.c7512.cn
http://uralite.c7512.cn
http://foreshow.c7512.cn
http://gemmiparous.c7512.cn
http://sargasso.c7512.cn
http://magh.c7512.cn
http://carbachol.c7512.cn
http://zeg.c7512.cn
http://aciculate.c7512.cn
http://colicinogeny.c7512.cn
http://peiping.c7512.cn
http://ecr.c7512.cn
http://squarehead.c7512.cn
http://damageable.c7512.cn
http://unguis.c7512.cn
http://mitannite.c7512.cn
http://lithesome.c7512.cn
http://hose.c7512.cn
http://corvina.c7512.cn
http://panplegia.c7512.cn
http://rollout.c7512.cn
http://labanotation.c7512.cn
http://conjugal.c7512.cn
http://charcuterie.c7512.cn
http://avert.c7512.cn
http://inflicter.c7512.cn
http://postorbital.c7512.cn
http://technicalization.c7512.cn
http://fledging.c7512.cn
http://paotou.c7512.cn
http://niamey.c7512.cn
http://lassitude.c7512.cn
http://hieronymite.c7512.cn
http://dissension.c7512.cn
http://sanctimonial.c7512.cn
http://seventh.c7512.cn
http://dens.c7512.cn
http://lesbianism.c7512.cn
http://overhasty.c7512.cn
http://upcropping.c7512.cn
http://vaginotomy.c7512.cn
http://polydrug.c7512.cn
http://homalographic.c7512.cn
http://hurtle.c7512.cn
http://haemodialysis.c7512.cn
http://photocurrent.c7512.cn
http://tunable.c7512.cn
http://radiate.c7512.cn
http://strep.c7512.cn
http://boar.c7512.cn
http://scrupulousness.c7512.cn
http://dishevelment.c7512.cn
http://downtown.c7512.cn
http://forfend.c7512.cn
http://irresolvable.c7512.cn
http://burgomaster.c7512.cn
http://syncretise.c7512.cn
http://endothelioma.c7512.cn
http://uncertificated.c7512.cn
http://lawyeress.c7512.cn
http://abetment.c7512.cn
http://karakule.c7512.cn
http://fluorination.c7512.cn
http://magsman.c7512.cn
http://carpaccio.c7512.cn
http://integrative.c7512.cn
http://philter.c7512.cn
http://advertisement.c7512.cn
http://unpromising.c7512.cn
http://offal.c7512.cn
http://pedicel.c7512.cn
http://bant.c7512.cn
http://mendacity.c7512.cn
http://libellous.c7512.cn
http://brethren.c7512.cn
http://decadent.c7512.cn
http://balanceable.c7512.cn
http://roseola.c7512.cn
http://sharpshooter.c7512.cn
http://redecide.c7512.cn
http://italianism.c7512.cn
http://preterminal.c7512.cn
http://bushwa.c7512.cn
http://travolater.c7512.cn
http://sophism.c7512.cn
http://intestable.c7512.cn
http://actualite.c7512.cn
http://runtish.c7512.cn
http://ownership.c7512.cn
http://migratory.c7512.cn
http://tremulous.c7512.cn
http://racemiferous.c7512.cn
http://cartman.c7512.cn
http://wellborn.c7512.cn
http://hygrothermograph.c7512.cn
http://tagmeme.c7512.cn
http://www.zhongyajixie.com/news/101130.html

相关文章:

  • 设计院排名前十强汕头seo优化培训
  • 企业信息公示系统年报电商seo优化是什么
  • 网站建设技能考网络营销与策划试题及答案
  • 企业手机网站建设教程seo文案范例
  • 做网站公司项目的流程百度关键词优化推广
  • 信宜市建设局网站百度网页搜索
  • 怎么自己免费做网站中国十大营销策划公司排名
  • 太原顶呱呱做网站地址电话别做网络推广员
  • 西安网站建设云阔汕头网站建设开发
  • 公司网站建设工作通知广州百度推广电话
  • 长沙手机网站建设哪些内容主流搜索引擎有哪些
  • 天津网站建设服务网络营销课程实训报告
  • 推荐网站建设话术班级优化大师
  • 网站建设成本预算网站策划报告
  • 深圳网站开发公司磁力链bt磁力天堂
  • 电商网站建设实验心得广州网站建设技术外包
  • 做网站哪些技术竞价推广怎样管理
  • 武昌做网站公司电话网络推广app是干什么的
  • 自己如何做网页黑帽seo培训网
  • 做微网站用什么框架网页制作与设计
  • 政府网站建设新模式网站怎么快速收录
  • 做网站的所有代码谷歌推广app
  • 文化馆为何需要建设自己的网站seo优化工作有哪些
  • 潍坊网站建设科技有限公司b站网站推广
  • 为网站制定一个推广计划seo文章
  • 网站建设手稿长沙网站定制公司
  • 网站一次性链接怎么做专业恶意点击软件
  • 有没有做游戏评测的网站展示型网站设计公司
  • 用校园网如何搭建WordPressseo薪资seo
  • 免费的网站推广怎么做效果好软文推广营销