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

b2c网站对比整站优化系统

b2c网站对比,整站优化系统,视觉设计师的工作内容,句容建设质检站网站数据结构的动态顺序表有以下几个操作:创建,销毁,初始化,增删查改和打印以及内存空间不够时的扩容 本文的宏定义: #define SeqTypeData int 1.动态顺序表的创建 typedef struct SeqListInit{//动态顺序表的创建SeqT…

数据结构的动态顺序表有以下几个操作:创建,销毁,初始化,增删查改和打印以及内存空间不够时的扩容

本文的宏定义:

#define SeqTypeData int

1.动态顺序表的创建

typedef struct SeqListInit{//动态顺序表的创建SeqTypeData* a;int size;//实际有效空间int capacity;//申请空间大小
}SL;

2.动态顺序表的销毁

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

值得注意的是,ps->a要赋值NULL,避免野指针的出现。

3.动态顺序表的初始化

void SeqListInit(SL* ps){//顺序表初始化ps->a = NULL;ps->capacity = ps->size = 0;
};

4.动态顺序表的增加

插入时都要判断空间是否足够,是否需要扩容,以及ps->size要加一。

(1)头插

void SeqListPushFront(SL* ps, SeqTypeData x) {//顺序表头插SeqListCheckCapacity(ps);//判断是否需要扩容//挪动数据ps->size++;for (int i = 0; i < ps->size; i++) {ps->a[ps->size - i] = ps->a[ps->size - i - 1];}ps->a[0] = x;
}

头插也就是把数据都向后挪一位,再给第一位赋值。

(2)尾插

void SeqListPushBack(SL* ps, SeqTypeData x) {//顺序表尾插SeqListCheckCapacity(ps);//判断是否需要扩容ps->a[ps->size++] = x;
}

(3)任意位置插入

void SeqListInsert(SL* ps, int adr, SeqTypeData x)//adr为逻辑地址,等于数组下标加一
{if (adr > (ps->size + 1) || adr < 1){printf("adr invalid\n");return;}SeqListCheckCapacity(ps);//判断是否需要扩容int end = ps->size ;while (end >= adr-1){ps->a[end + 1] = ps->a[end];--end;}ps->a[adr-1] = x;ps->size++;
}

任意位置插入要记得判断插入位置的合法性,再将插入位置的数据向后移一位,再在插入位置赋值即可。

5.动态顺序表的删除

进行删除操作时,要判断表是否已经是空表,此时不可再删。删除成功时,ps->size减一。

(1)头删

void SeqListPopFront(SL* ps) {//顺序表头删if (ps->size == 0){printf("顺序表为空,不可再删\n");}else{for (int i = 0; i < ps->size; i++) {ps->a[i] = ps->a[i+1];}ps->size--;}
}

(2)尾删


void SeqListPopBack(SL* ps) {//顺序表尾删if (ps->size--);else{printf("顺序表为空,不可再删\n");}
}

(3)任意位置删除

void SeqListErase(SL* ps, int adr) {if (ps->size == 0){printf("顺序表为空,不可再删\n");}if (adr > (ps->size + 1)){printf("删除位置错误\n");}for (int i = adr; i < ps->size; i++) {ps->a[i-1] = ps->a[i];}ps->size--;
}

任意位置的删除也要检验删除位置的合法性。

6.动态顺序表的任意位置的修改

void SeqListCheck(SL* ps, int adr, SeqTypeData x) {//adr为逻辑地址,等于数组下标加一if(adr>(ps->size+1))printf("修改位置错误\n");elseps->a[adr - 1] = x;
}

任意位置的修改也要检验删除位置的合法性。

7.顺序表的打印

void SeqListPrint(SL ps) {//顺序表打印for (int i = 0; i < ps.size; i++){printf("%d ", ps.a[i]);}
}

8.动态顺序表的扩容

void SeqListCheckCapacity(SL* ps) {//顺序表检查是否需要扩容if (ps->size == ps->capacity) {SeqTypeData newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;SeqTypeData* tem = (SeqTypeData*)realloc(ps->a, newcapacity * sizeof(SeqTypeData));if (tem == NULL) {printf("realloc fail\n");exit(-1);}ps->a = tem;ps->capacity = newcapacity;}
}

9.全部代码

#define _CRT_SECURE_NO_WARNINGS 1
#include "SeqList.h"#include <stdio.h>
#include <stdlib.h>
#include <assert.h>void SeqListInit(SL* ps){//顺序表初始化ps->a = NULL;ps->capacity = ps->size = 0;
};void SeqListDestroy(SL* ps) {//顺序表销毁free(ps->a);ps->a = NULL;ps->capacity = ps->size = 0;
};void SeqListPrint(SL ps) {//顺序表打印for (int i = 0; i < ps.size; i++){printf("%d ", ps.a[i]);}if (ps.size == 0)printf("顺序表为空");printf("\n");
}//int SeqListCapacity(SL* ps) {//
//	return ps->capacity;
//}void SeqListPushBack(SL* ps, SeqTypeData x) {//顺序表尾插SeqListCheckCapacity(ps);ps->a[ps->size++] = x;
}void SeqListPushFront(SL* ps, SeqTypeData x) {//顺序表头插SeqListCheckCapacity(ps);//挪动数据ps->size++;for (int i = 0; i < ps->size; i++) {ps->a[ps->size - i] = ps->a[ps->size - i - 1];}ps->a[0] = x;
}void SeqListCheckCapacity(SL* ps) {//顺序表检查是否需要扩容if (ps->size == ps->capacity) {SeqTypeData newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;SeqTypeData* tem = (SeqTypeData*)realloc(ps->a, newcapacity * sizeof(SeqTypeData));if (tem == NULL) {printf("realloc fail\n");exit(-1);}ps->a = tem;ps->capacity = newcapacity;}
}void SeqListPopBack(SL* ps) {//顺序表尾删if (ps->size--);else{printf("顺序表为空,不可再删\n");}
}void SeqListPopFront(SL* ps) {//顺序表头删if (ps->size == 0){printf("顺序表为空,不可再删\n");}else{for (int i = 0; i < ps->size; i++) {ps->a[i] = ps->a[i+1];}ps->size--;}
}void SeqListFind(SL ps, SeqTypeData x) {//顺序表查找/*int cnt;*/for (int i = 0; i < ps.size; i++) {if (ps.a[i] == x) {printf("%d", i + 1);//返回逻辑下标/*cnt++;*/}}/*if (cnt == 0)printf("没有这个数字");*/
}void SeqListInsert(SL* ps, int adr, SeqTypeData x)//adr为逻辑地址,等于数组下标加一
{if (adr > (ps->size + 1) || adr < 1){printf("adr invalid\n");return;}SeqListCheckCapacity(ps);int end = ps->size ;while (end >= adr-1){ps->a[end + 1] = ps->a[end];--end;}ps->a[adr-1] = x;ps->size++;
}void SeqListErase(SL* ps, int adr) {//adr为逻辑地址,等于数组下标加一if (ps->size == 0){printf("顺序表为空,不可再删\n");}if (adr > (ps->size + 1)){printf("删除位置错误\n");}for (int i = adr; i < ps->size; i++) {ps->a[i-1] = ps->a[i];}ps->size--;
}void SeqListCheck(SL* ps, int adr, SeqTypeData x) {if(adr>(ps->size+1))printf("修改位置错误\n");elseps->a[adr - 1] = x;
}void menu()
{printf("请选择\n");printf("********1.头插  2.尾插********\n");printf("********3.头删  4.尾删********\n");printf("********5.随插  6.随删********\n");printf("********7.查找  8.打印********\n");printf("********9.修改  0.退出********\n");printf("请选择\n");
}int main()
{int input;SL ps;SeqTypeData x;int adr;SeqListInit(&ps);do {menu();scanf("%d", &input);switch (input){case 1:printf("请输入头插数字\n");scanf("%d", &x);SeqListPushFront(&ps, x);break;case 2:printf("请输入尾插数字\n");scanf("%d", &x);SeqListPushBack(&ps, x);break;case 3:SeqListPopFront(&ps);break;case 4:SeqListPopBack(&ps);break;case 5:printf("请输入插入位置和数字\n");scanf("%d%d", &adr, &x);SeqListInsert(&ps, adr, x);break;case 6:printf("请输入删除位置\n");scanf("%d", &adr);SeqListErase(&ps, adr);break;case 7:printf("请输入查找数字\n");scanf("%d", &x);SeqListFind(ps, x);break;case 8:SeqListPrint(ps);break;case 9:printf("请输入修改位置和数字\n");scanf("%d%d", &adr, &x);SeqListCheck(&ps, adr, x);break;case 0:printf("正在退出中");break;}} while (input);return 0;
}

10.效果展示

由于图片大小问题,只展示了部分功能。

http://www.tj-hxxt.cn/news/604.html

相关文章:

  • wordpress添加搜索重庆关键词seo排名
  • 网站系统设计兰州seo培训
  • 在哪查询网站做的哪些外链秒收录关键词代发
  • 东莞p2p网站开发价钱网页设计实训报告
  • 做网站一般用什么配置的电脑黄页推广引流
  • 做hmtl的基本网站指数型基金是什么意思
  • 网站有pc站和手机站福州seo代理计费
  • 上海网站建设褐公洲司国外免费网站域名服务器
  • 做网站 绑定域名技能培训班有哪些
  • 建设安全员协会网站关键词排名的工具
  • 自动化科技产品网站建设站外推广方式
  • 邯郸网站设计培训宁波seo营销
  • 专业外贸网站建设公司小红书seo排名规则
  • 网站中英文转换怎么做直播营销
  • iis 多网站淘宝seo搜索优化
  • 石狮网站开发seo数据是什么
  • 电商网站开发平台快速优化网站排名软件
  • 商务网站开发的测试报告关键词在线听免费
  • 青岛做网站好的公司营销型网站建设论文
  • 江宁区住房和城乡建设厅网站推广方案的内容有哪些
  • 做网站必须有云虚拟主机免费制作网站
  • 网站建设收费标准报价境外电商有哪些平台
  • 重庆疫情最新动态seo的中文含义是
  • 咸阳营销型网站建设龙岗网站设计
  • 重庆微信网站建设2024年8月爆发新的大流行病毒吗
  • 网站怎么做外联网站建设百度推广
  • 旅行社网站 模板夫唯seo
  • 网站空间购买哪家好山东移动网站建设
  • 中建豪城建设有限公司网站兰州网络推广新手
  • 网站制作无锡凡科建站