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

查找网站域名淘宝店铺推广

查找网站域名,淘宝店铺推广,静态网页设计网站制作,看广告挣钱一天300元文章目录 一,问题描述二,基本要求三,算法分析(1)插入算法(2)删除算法 四,参考程序五,运行效果 一,问题描述 创建一个顺序表,编程实现顺序表的下列…

文章目录

  • 一,问题描述
  • 二,基本要求
  • 三,算法分析
    • (1)插入算法
    • (2)删除算法
  • 四,参考程序
  • 五,运行效果


一,问题描述

创建一个顺序表,编程实现顺序表的下列基本运算:

  1. 在顺序表的第i个位置上插入m个新元素;
  2. 删除顺序表中元素值在x到y之间的所有元素。

二,基本要求

  1. 采用动态分配方式设计顺序表的存储结构;
  2. 插入算法必须考虑存储空间的动态扩充;插入和删除两种算法均必须满足时间复杂度为O(n),空间复杂度为O(1);
  3. 根据插入和删除的算法分析,请在参考程序中的下划线处填上适当的子句,完善参考程序;
  4. 设计测试数据,上机调试、测试参考程序,保存和打印测试结果,对测试结果进行分析,重点分析两种算法的性能是否达到第2条的要求;
  5. 运行效果图。
    在这里插入图片描述

三,算法分析

(1)插入算法

  1. 判断i、m的合法性;
  2. 判断L.length+m是否大于L.listsize,是则扩充空间;
  3. 将L中的第n到第i个元素逆序向后移动m个位置;
  4. 在位置i处插入m个新元素。(可以是已知数组,也可键盘输入);
  5. 调整L的参数,算法结束。

(2)删除算法

在线性表中设置两个初值为0的下标变量i和j,其中,i为比较元素的下标,j为赋值元素的下标。依次取线性表中下标为i的元素与x和y比较,假若是x到y之外的元素,则赋值给下标为j的元素。这种算法比删除一个元素后立即移动其后面的元素的效率高得多。

四,参考程序

#define MAXSIZE 10        //空间初始分配量
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>typedef int Status;
typedef int ElemType;     //将元素类型定义为整型
typedef struct {ElemType* elem;     //存储空间基址int length;		   //当前顺序表中实际元素的个数int listsize;	       //当前分配的存储容量
} SqList;Status  CreatList(SqList* L) {		// 建立有n个元素的顺序表int i;do {							// 若表的长度输入不合法,则循环输入printf("请输入元素个数:");scanf("%d", &L->length);} while (L->length <= 0 || L->length > MAXSIZE);L->elem = (ElemType*)malloc(MAXSIZE * sizeof(ElemType));if (!L->elem) return ERROR;for (i = 0; i < L->length; i++) {		// 依次输入n个元素printf("请输入第%d个元素值=>", i + 1);scanf("%d", &L->elem[i]);}return OK;
}Status  InsertList(SqList* L, int i, int m, ElemType* E) {// 在顺序表L的第i个位置上插入m个新元素E[]if (i < 1 || i > L->length + 1 || m <= 0 || L->length + m > MAXSIZE) // 进行i、m的合法性判断return  ERROR;ElemType* p;int  j;if (L->length + m > L->listsize) {	//若顺序表空间不够,则需扩充空间p = (ElemType*)realloc(L->elem, (L->length + m) * sizeof(ElemType));if (!p) exit(OVERFLOW);L->elem = p;L->listsize = L->length + m;}for (j = L->length - 1; j >= i - 1; --j) 			// 移动元素L->elem[j + m] = L->elem[j];for (j = 0; j < m; j++)					// 插入元素L->elem[i + j - 1] = E[j];L->length = L->length + m;  // 修改表的长度return OK;
}// InsertList Status  DeleteList(SqList* L, int x, int y) {// 在顺序表L中删除其值介于x到y之间的所有元素if (x > y) return ERROR;int i, j;          // 临时变量j用于当前元素i前移的位置for (i = j = 0; i < L->length; i++)if (L->elem[i] >= x && L->elem[i] <= y)j++;elseL->elem[i - j] = L->elem[i];  // 前移j个位置L->length -= j;return OK;
}void PrintList(SqList L) {		// 输出顺序表中所有元素值int i;printf("顺序表中有%d个元素:\n", L.length);for (i = 0; i < L.length; i++)printf("%4d", L.elem[i]);printf("\n");
}int main()
{SqList  L;int  i, m = 3;						// 插入点及插入元素个数ElemType  E[] = { 23,24,25 };			// 待插入的新元素ElemType  x, y;printf("(1) 建立有n个元素的顺序表 ……\n");if (!CreatList(&L)) { printf("创建顺序表失败!\n");  return 0; }printf("当前顺序表如下:\n");PrintList(L);printf("(2) 在顺序表第i个位置上插入m个新元素……\n");printf("请输入插入位置i:");scanf("%d", &i);if (!InsertList(&L, i, m, E))printf("插入失败!\n");else {printf("插入成功!插入后的顺序表如下:\n");PrintList(L);}printf("(3) 在顺序表中删除其值介于x到y之间的所有元素……\n");printf("请输入被删元素下限值x:");scanf("%d", &x);printf("请输入被删元素上限值y:");scanf("%d", &y);if (!DeleteList(&L, x, y))printf("参数错误,删除失败!");else {printf("删除后的顺序表如下:\n");PrintList(L);}return 0;
}

五,运行效果

在这里插入图片描述

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

相关文章:

  • 网站增加域名备案专业seo培训学校
  • 七号技师 wordpressseo关键词快速排名
  • 织梦系统网站如何创建网址
  • 怎么做个手机版的网站sem专员
  • 网站建设实训个人总结常州谷歌推广
  • 申报城市维护建设税上哪个网站小红书推广运营
  • wordpress 图片环绕北京关键词优化报价
  • 源码网站取名网站被禁用如何解决
  • css 网站根目录安卓优化大师官方版本下载
  • 建个网站 做ib代理百度自媒体注册入口
  • 新手学做百度联盟网站长尾关键词快速排名软件
  • 网站建设公司上海做网站公司排名百度网盘客服人工电话
  • 中山住房和建设局工程交易网站社群营销策略有哪些
  • wordpress文章页的三大标签seo辅助工具
  • 网络销售型网站有哪些内容图片外链上传网站
  • 网站规划的意义铜仁搜狗推广
  • 怎么选择宜昌网站建设企业推广的渠道有哪些
  • 广州公司网站建设地推怎么做最有效
  • 企业管理培训课程有哪些seo外链专员工作要求
  • 水果配送网站建设新疆今日头条新闻
  • 西安做北郊做网站上海网站seo
  • 网站注册价格网站更新seo
  • 北京住建网站域名注册多少钱
  • 如何知道网站是否被k中国的搜索引擎有哪些
  • 模板网站有利于优化最新国内你新闻
  • 杭州做网站比较出名的公司有哪些seo公司网站
  • photoshop 做网站公关公司排名
  • 设计素材网站收益广东佛山疫情最新情况
  • 免费创建网站软件plc培训机构哪家最好
  • 蚌埠网站建设宁波营销型网站建设优化建站