顺序表Sqlist.cpp
顺序表Sqlist.cpp
文章目录
- 顺序表Sqlist.cpp
- 1 顺序表插入逻辑
- 2 顺序表删除逻辑
- 3 代码演示
- 4 运行结果
1 顺序表插入逻辑
在表的第 i 个位置前插入一个元素
实现步骤:
- 将第 n 至第 i 位的元素向后移动一个位置;
- 将要插入的元素写到第 i 个位置;
- 表长加1。
注意:事先应判断: 插入位置i 是否合法?表是否已满?
应当符合条件:
1≤i≤n+1 或 i=[1, n+1]
插入时的平均移动次数为:n (n+1) / 2 ÷(n+1)=n/2≈O(n)
2 顺序表删除逻辑
删除线性表的第i个位置上的元素
- 实现步骤:
- 将第 i+1 至第 n 位的元素向前移动一个位置;
- 表长减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 运行结果
顺序表Sqlist.cpp相关推荐
- 非递减有序排列C语言,非递减有序顺序表的排序
由于编者水平有限,如有错误,请多多包涵. /* File name: Example.cpp Description: 非递减有序线性表LA, 非递减有序线性表LB, 要求排序后存放在LC中,且LC元 ...
- 数据结构 创建顺序表
3.18数据结构--创建顺序表 运行结果截图: #define _CRT_SECURE_NO_WARNINGS #define MAXSIZE 100 #include<stdio.h> ...
- 顺序表(线性表的顺序存储)---C语言版
目录 顺序表 一.顺序表的定义 二.顺序表上基本操作的具体实现 1.`InitList_Sq(*L)`:初始化表.构造一个空的顺序表. 分类一:主函数里声明的是一个指向顺序表的指针 分类二:主函数里声 ...
- 6-2 有序顺序表的插入
本题要求实现递增顺序表的有序插入函数.L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序 ...
- 顺序表——有序顺序表的插入
本题要求实现递增顺序表的有序插入函数.L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序 ...
- 顺序表ADT模板设计及简单应用:将顺序表中前 m 个元素和后 n 个元素进行互换
顺序表ADT模板设计及简单应用:将顺序表中前 m 个元素和后 n 个元素进行互换 作者: 冯向阳 时间限制: 1S 章节: DS:线性表 问题描述 : 目的:使用自行设计的顺序表ADT或STL中的ve ...
- 顺序表的查找C语言数据结构
在顺序表中查找元素 大致代码片有注释,若还有疑问,可进行评论 #include<stdio.h> #include<stdlib.h>#define Maxsize 10 // ...
- c语言顺序表所需的头文件,数据结构【顺序表】
1.线性表定义 线性表是一种线性结构.线性结构的特点是数据元素之间是一种线性关系,数据元素"一个接一个的排列".在一个线性表中数据元素的类型是相同的,或者说线性表是由同一类型的数据 ...
- 6-2 有序顺序表的插入 (10 分)
6-2 有序顺序表的插入 (10 分) 本题要求实现递增顺序表的有序插入函数.L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, Elem ...
最新文章
- 用于道路目标检测的少镜头学习
- ScribeFireBlog 发的一篇在Cnblogs的日志
- java B2B2C 源码多租户电子商城系统-Spring Cloud组件详解
- 【手写系列】纯手写实现一个高可用的RPC
- iptables之iptables命令详解
- html 编辑xml,编辑XML\HTML时取消浏览“amp”
- python知识点汇总百度文库_PYTHON知识点汇总.doc
- 使用 Spring Boot Security 进行安全控制
- 来谈谈Spring构造函数注入的循环依赖问题
- 数据传输服务 DTS > 数据迁移 > 支持的数据库和迁移类型
- python函数装饰器详解_Python语言函数装饰器用法实例详解
- Inno Setup 6.0.3+ 简体中文语言包
- ipv6的127位掩码如何表示_详解IP地址、子网掩码、网络号、主机号、网络地址、主机地址...
- 小马哥-----高仿苹果6 plus刷机 详细拆机主板图与开机界面图与移植触摸屏版中文rec 界面 多图展示
- 微信公众号文章音视频下载的几种办法-涵盖PC端和手机端
- 集群服务器中定时任务多次执行的解决方案
- 【续】数学模型——人口增长模型
- 20条非常实用的Python代码实例
- spark专业术语解释
- 零中频接收机频率转换图_低成本ADS-B接收机去混合技术
热门文章
- 深入理解Linux内核链表
- Linux shell sed awk
- oppo专用计算机,OPPO手机助手
- php 解压dat,电脑微信dat文件怎么打开
- 内核链表list.h文件剖析
- python获取目录树_Python读取文件目录树——os.walk
- PyTorch的nn.Linear()详解
- LeetCode 2195. 向数组中追加 K 个整数(贪心)
- LeetCode 1985. 找出数组中的第 K 大整数(排序)
- LeetCode 1942. 最小未被占据椅子的编号(set)