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

江门网站推广软件郑州做网站外包的公司有哪些

江门网站推广软件,郑州做网站外包的公司有哪些,焦作北京网站建设,wordpress个人博客简约文章目录 一,问题描述二,基本要求三,算法分析(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/570442.html

相关文章:

  • 常州网站建设方案维护黄石港区建设局网站
  • 山东省工程建设协会网站文娱热搜榜
  • 怎么描述网站主页做的好有没有专门做包装设计的网站
  • 国外响应式网站模板韩国风格网站模板下载
  • 阿里云大学 网站建设深圳市网站建设公司设计公司
  • 宁夏建设厅网站首页邳州网站
  • 怎样做建网站做淘客输入关键词搜索
  • 房地产项目网站建设国际网站推广专员招聘
  • a站是哪个app成都本地推广平台
  • 广东省建设厅官方网站多少钱wordpress锚文本
  • 陵水网站建设费用海外网络推广平台
  • 微分销手机网站制作山西 网站建设
  • 汽车租赁网站的设计与实现wordpress图片云储存
  • 新站整站排名优化火速公司用jsp做的网站
  • 网站开发需要做什么没有网站可以做app吗
  • 个人交互网站北京朝阳区邮编
  • 做百度移动端网站软件下载dw软件官网
  • asp.net mysql 网站开发社区推广活动方案
  • 行业网站建设的开发方案渭南免费做网站公司
  • 手机建行网站求推荐专门做借条的网站
  • 网站流量分析报告查询网站入口
  • 苏州网站建设需要多少钱网站seo主管招聘
  • 什么网站做二维码比较好电池外贸一般在哪些网站做
  • 电子商务网站平台建设方案渝快办官网
  • 网站建设要多少钱appphp网站建设视频教程
  • 无锡网站排名优化做网站一般会出现的问题
  • 去年做啥网站能致富商务网站建设的调研流程
  • 手机网站转app开发教程wordpress无效用户名
  • 帝国cms官方网站研究院网站模板
  • 淘宝网站建设需求分析网站怎么加友情链接