顺序表Sqlist.cpp

顺序表Sqlist.cpp

文章目录

  • 顺序表Sqlist.cpp
      • 1 顺序表插入逻辑
      • 2 顺序表删除逻辑
      • 3 代码演示
      • 4 运行结果

1 顺序表插入逻辑

在表的第 i 个位置前插入一个元素

  • 实现步骤:

    1. 将第 n 至第 i 位的元素向后移动一个位置;
    2. 将要插入的元素写到第 i 个位置;
    3. 表长加1。

    注意:事先应判断: 插入位置i 是否合法?表是否已满?

    应当符合条件:1≤i≤n+1 或 i=[1, n+1]

插入时的平均移动次数为:n (n+1) / 2 ÷(n+1)=n/2≈O(n)


2 顺序表删除逻辑

删除线性表的第i个位置上的元素

  • 实现步骤:
    1. 将第 i+1 至第 n 位的元素向前移动一个位置;
    2. 表长减1。

注意:事先需要判断,删除位置i 是否合法?

顺序表删除一元素的时间效率为: T(n) = (n-1) / 2 ≈ O(n)

顺序表插入、删除算法的平均空间复杂度为 O(1)


3 代码演示

以下代码创建了一个顺序表,以随机数的方式给顺序表赋初值,实现了基本的插入,删除,遍历

#include <stdlib.h>
#include <time.h>
#define MAXSIZE (10)
#define OK (1)
#define ERROR (0)typedef int ElementType;
typedef struct ArrayList {ElementType data[MAXSIZE];int length;
} *List;List CreateList(void)        //创建顺序表,初始化 
{List L = (List)malloc(sizeof(struct ArrayList));L->length = 0;return L;
}void InitList(List L)     //给顺序表赋初值 
{srand((unsigned)(time(NULL)));for (int i = 0; i < MAXSIZE / 2; i++) {	 L->data[i] = rand()%71+20;L->length++;}
}int Insert(List L, int position, ElementType e)
{if (position < 1 || position > L->length + 1) {return ERROR;}if (L->length == MAXSIZE) {return ERROR;}for (int i = L->length - 1; i >= position - 1; i--) {L->data[i + 1] = L->data[i];}L->data[position - 1] = e;L->length++;return OK;
}int Delete(List L, int position, ElementType *e)
{if (position < 1 || position > L->length) {return ERROR;}*e = L->data[position - 1];for (int i = position - 1; i <= L->length - 1; i++) {L->data[i] = L->data[i + 1];}L->length--;return OK;
}void PrtList(List L)
{for (int i = 0; i <= L->length - 1; i++) {printf("%d ", L->data[i]);}printf("\n");
}int main(void)
{int position;int e;List L = CreateList();InitList(L);PrtList(L);printf("\nplease input (position & element) to insert:");scanf("%d %d", &position, &e);if (Insert(L, position, e)) {printf("OK\n");PrtList(L);} else {printf("ERROR\n");}printf("please input (position) to delete:");scanf("%d", &position);if (Delete(L, position, &e)) {printf("OK\n");PrtList(L);} else {printf("ERROR\n");}
}

4 运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

顺序表的插入删除查找遍历

顺序表的插入删除查找遍历 文章目录顺序表的插入删除查找遍历代码运行结果截图代码 #define Maxsize 100typedef int ElemType; typedef struct{ElemType data[Maxsize];int length; }Sqlist;void Createlink(Sqlist &L) {int a;printf("请输入你要创建的顺序表的长…

Yann LeCun最新访谈:能量模型是通向自主人工智能系统的起点

来源&#xff1a;ZDNet编译&#xff1a;钱磊编辑&#xff1a;陈彩娴继自监督学习之后&#xff0c;Yann LeCun 在接受 ZDNet 的最新访谈中又着重探讨了他在几年前曾大篇幅推崇的概念&#xff1a;「能量模型」&#xff08;energy-based models&#xff09;。什么是能量模型&#…

HTML5崛起之时,Java桌面时代就已经终结了

来源&#xff1a;AI前线作者&#xff1a;Steve Hannah翻译&#xff1a;核子可乐编辑&#xff1a;燕珊2004 年 Google Maps 的面世标志着 Java 桌面时代的终结&#xff0c;也改变了桌面环境下“跨平台”的基本定义。本文作者以个人视角对 Java 桌面发展历程做了回顾&#xff0c;…

单链表介绍及其实现

链表 文章目录链表链表的专业术语&#xff1a;实现链表的专业术语&#xff1a; 首节点&#xff1a;存放第一个有效数据的结点&#xff1b;尾结点&#xff1a;存放最后一个有效数据的结点&#xff1b;尾指针指向&#xff1b;头结点&#xff1a;头结点的数据类型和首结点的类型一…

Linux基础概念及常用命令

Linux基础概念及常用命令 文章目录Linux基础概念及常用命令1 Linux概述1.1 为什么要学Linux1.2 Linux简介1.3 Linux 发行版1.4 Linux 应用领域2 Linux常用命令2.1 Linux目录结构2.2 Linux目录命令2.3 Linux文件命令2.4 Linux其他命令1 Linux概述 1.1 为什么要学Linux linux诞生…

PNAS新研究:剑桥学者发现,有些 AI 模型无法被计算

来源&#xff1a;AI科技评论作者&#xff1a;Ailleurs编辑&#xff1a;陈彩娴近日&#xff0c;剑桥学者在《美国科学院院报》&#xff08;PNAS&#xff09;上发表了一篇名为“The Difficulty of Computing Stable and Accurate Neural Networks: On the Barriers of Deep Learn…

量子计算机首次成功模拟化学反应

SHUTTERSTOCK来源&#xff1a;IEEE电气电子工程师━━━━利用谷歌的Sycamore量子处理器&#xff0c;科学家们进行了迄今为止涉及量子计算机的最大规模的化学模拟。他们采用了一种新技术&#xff0c;可能有助于抵抗量子电路中常见的噪声。量子计算机理论上可以实现量子优势&…

单链表的按位置插入和删除

单链表的插入和删除 文章目录单链表的插入和删除1 单链表插入2 单链表删除3 代码实现1 单链表插入 要想将结点s插入到ai与ai1之间&#xff0c;不需要移动数据元素&#xff0c;只需要在ai与ai1之间插入一个新的结点&#xff0c;也就是我们要插入的结点s。关键就是要修改结点p的…

DeepMind最新研究:如何将「大语言模型」 训练到最优?

来源&#xff1a;AI科技评论 作者&#xff1a;维克多Transformer的提出距离我们已经有5年的时间&#xff0c;随着模型规模的不断增长&#xff0c;性能提升也逐渐出现边际效益递减的情况。如何训练出最优性能的大模型&#xff1f;最近&#xff0c;DeepMind做了一项调查&#xf…

给计算机处理器做手术来研究大脑

来源&#xff1a;混沌巡洋舰在人类对大脑认识的历史上&#xff0c;曾经使用过很多隐喻来描述脑&#xff0c;比如齿轮机械、电话交换机、计算机等等。目前&#xff0c;“脑就像一台计算机”这个隐喻仍然占据着主导地位&#xff0c;尽管人们对于这个隐喻的贴切程度的看法存在分歧…

为什么百度查到的ip地址和ipconfig查到的不同;详解公网Ip和私网ip; 网络分类ABC类;

文章目录1.百度查到的ip和ipconfig查到的不同1.1引出问题1.2不一样的原因2.IP地址分类2.1IP类别2.1 Public IP和Private IP3.总结3.1整理上网流程3.2遗留问题1.百度查到的ip和ipconfig查到的不同 IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少…

国科金:共融机器人基础理论与关键技术研究重大研究计划

来源&#xff1a;学术头条国家自然科学基金委员会现发布共融机器人基础理论与关键技术研究重大研究计划 2022 年度项目指南&#xff0c;请申请人及依托单位按项目指南中所述的要求和注意事项申请。 国家自然科学基金委员会 2022 年 4 月 2 日一、科学目标本重大研究计划瞄准国…

停止追赶最新的 RPA 趋势

来源&#xff1a;AI前线作者&#xff1a;Anupam Krishnamurthy译者&#xff1a;Phoenix策划&#xff1a;蔡芳芳本文最初发布于 anupam.de 博客&#xff0c;由 InfoQ 中文站翻译并分享。我做了 4 年的 RPA 开发者——2017 至 2021 年。在 2019 年底&#xff0c;我做了一个重要的…

请求转发与重定向的区别和执行流程

请求转发与重定向的区别和执行流程 文章目录请求转发与重定向的区别和执行流程1 请求转发与重定向区别2 现实生活的例子2.1 重定向2.2 请求转发3 重定向-流程图、代码、结果3.1 流程图3.2 代码BoyServlet3.3 代码GirlServlet3.4 web.xml文件3.5 结果4 请求转发-流程图、代码、结…

牛津大学最新调研:AI面临基准危机,NLP集中“攻关”推理测试

来源&#xff1a;AI科技评论作者:维克多人工智能&#xff08;AI&#xff09;基准为模型提供了衡量和比较的路径&#xff0c;超越基准&#xff0c;达到SOTA&#xff0c;经常成为顶会论文的标配。同时&#xff0c;有些基准确实推动了AI的发展&#xff0c;例如ImageNet 基准测试对…

Postman使用小教程--基础入门篇

文章目录1 Postman介绍2 postman基础功能介绍2.1 postman基础页面2.2 postman基础页面介绍2.2 接口测试流程和原理2.3 请求区域介绍3 导出和导入接口集3.1 导出3.2 导入4 设置环境变量4.1 环境变量优先级4.2 新建环境变量4.3 将返回值的某个数据设置为环境变量4.4 将其他的常用…

W玻色子质量实验与理论矛盾,或是十年来最重要的进展

来源&#xff1a;科学大院就在昨天&#xff0c;美国费米实验室的CDF项目在《Science》上发了篇文章&#xff0c;W玻色子质量的测量结果和标准模型预测的结果有明显差距。消息一出&#xff0c;粒子物理界炸了窝。因为这或许是十年来最重要的粒子物理进展&#xff01;这个结果意味…

Git理论教程

文章目录1 什么是Git1.1 什么是版本控制系统1.2 为什么需要版本控制系统1.3 常见的版本控制工具1.4 版本控制分类1.4.1 集中版本控制 SVN1.4.2 分布式版本控制 Git1.4.3 Git与SVN的主要区别2 Git环境配置3 Git基本理论3.1 Git三个区域3.2 Git工作流程3.3 Git项目搭建3.3.1 本地…

Science | 再创生命奇迹!日本科学家造出了不需要“父亲”的大鼠及小鼠

来源&#xff1a;【iNature】iNature从多能干细胞 (PSC) 体外生成生殖细胞可以对未来的生殖医学和动物育种产生重大影响。十年前&#xff0c;在小鼠中建立了体外配子发生。然而&#xff0c;在任何其他物种中尚未实现诱导原始生殖细胞样细胞&#xff08;PGCLCs&#xff09;产生配…

总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程

总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程 文章目录总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程1 vue中index.html、main.js、App.vue、index.js关系简介1.1 项目的运行入口index.html1.2 入口文件main.j…