线性表包括顺序表和链表(单链表、双链表等),这里我们简单探讨一下线性表中顺序表的基本操作和实现。

线性表其实就是对数组的一个实现,其逻辑上和物理存储上的地址都是连续的(数组的下标是从0开始的,而线性表的下标是从1开始的)。

首先声明一个顺序类型的线性表:

//定义一个结构体类型
#define InitSize 100 //初始大小
typedef struct {int data[InitSize];   //定义一个int型数组,理论上在伪代码中该类型应该为泛型即任意类型(ElementType),在此我用int代替方便代码的编写int length, maxSize; //长度、最大容量
}SeqList;   //别名        

然后依次实现线性表的相关操作;

向线性表中插入一个元素:

/*
function:线性表的插入
1.插入的位置不能大于线性表的长度+1(可以等于:即插在末尾)
2.在某个指定位置插入时,需要依次将需要插入元素位置的元素向后移动,且从最后一个开始移动
3.长度加一
*/
/*
L: 线性表
i:需要插入的元素下标索引
e:需要插入的元素(int e:这里假设为int类型,实际上用伪代码表示为不局限任何类型ElementType)
*/
bool ListInsert(SeqList L, int i, int e) {//不能大于长度+1 且不能小于1if (i<1 || i > L.length+1) {return false;}for (int j = L.length - 1;j >= i - 1;j--) {L.data[j + 1] = L.data[j];}L.data[i - 1] = e;L.length++;return true;
}

从线性表中删除一个元素:

/*
function:删除指定下标的元素
1.将需要删除元素下标后的元素位置全部向前移动一位即可
2.长度减一
*/
/*
L: 线性表
i:需要删除的元素下标索引
*/
bool ListDelete(SeqList L,int i) {if (i<1 || i > L.length) {return false;}for (int j = i;j < L.length; j++) {L.data[j-1] = L.data[j];}L.length--;return true;
}

从线性表中查找指定的元素:

/*
function:查找指定元素
1.依次遍历线性表进行判断,存在即返回下标
*/
/*
L: 线性表
e:需要查找的元素的
*/
int ListFind(SeqList L, int e) {for (int j = 0;j < L.length;j++) {if (L.data[j] == e) {return j+1;}}return 0;
}

删除线性表中的最小值:

/*
function:删除线性表中最小的值,并将最后一个元素填充
1.遍历线性表取出最小值
2.将最后一个元素赋值给当前位置
3.返回最小值
*/
int ListDeleteMin(SeqList L) {if (L.length == 0) {return 0;}int min = 0;for (int i = 0;i < L.length;i++) {if (L.data[i] < min) {min = L.data[i];L.data[i] = L.data[L.length - 1];}}return min;
}

将线性表反转:

/*
function:将线性表反转
*/
void ListReverse(SeqList L) {if (L.length == 0) {return;}int length = L.length / 2;for (int i = 0;i <= length;i++) {int startIndex = i;int endIndex = L.length - i - 1;int temp;temp = L.data[endIndex];L.data[i] = temp;L.data[endIndex] = L.data[i];}
}

以上为线性表-顺序表的简单操作。

数据结构-线性表之顺序表相关推荐

  1. 数据结构与算法(一) 线性表之顺序表

     线性表是一种最简单.最常用的数据结构,根据存储方式可以分为顺序表和链表.  顺序表: 顺序表指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像(sequent ...

  2. Java数据结构与算法_线性表_顺序表与链表

    文章目录 线性表 顺序表 顺序表API设计 顺序表的代码实现 链表 单向链表 双向链表 总结 线性表 概述 线性表是最基本.最简单.也是最常用的一种数据结构. 一个线性表是n个具有相同特性的数据元素的 ...

  3. 数据结构——线性表:顺序表、单链表、双链表(C++)

    内容概要: 1.代码部分: 线性表抽象类 顺序表类 单链表类 双链表类 主函数 2.基本概念及注意事项 代码(测试环境VS2017): //线性表ADT类的定义:ADT_List.htemplate ...

  4. 1-2、数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化

    学习需要记录,更需要温习! 上一篇我们总结了什么是线性表,线性表的ADT类型,线性表的两种存储类型顺序存储结构和链式存储结构,今天正式进入线性表的顺序存储结构的总结和归纳,也就是数据结构的线性表的顺序 ...

  5. mysql 线性表_数据结构-线性表之顺序表

    线性表 (1)逻辑结构和物理结构 物理结构:数据元素在内存中真实的存放次序,有可能是连续存放的,也可能是散落于内存里. 逻辑结构:为了便于描述数据元素之间的关系,我们想象出数据之间应该有某种的对应关系 ...

  6. 数据结构之python实现顺序表

    数据结构之python实现顺序表 顺序表是指采用顺序存储的方式来存储数据元素的线性表. 初始化以及创建顺序表 class SequenceList(object):def __init__(self) ...

  7. 线性表、顺序表以及ArrayList、Iterable、Collection、List中重要的方法

    线性表基本概念 线性表(linear list)是n个具有相同特性的数据元素的有限序列. 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表.链表.栈.队列.字符串 线性表在逻辑上是线性结构 ...

  8. 线性表之顺序表与单链表的区别及优缺点

    这里比较的是基于C语言实现的顺序表与单链表,与其他语言的实现可能会有差异,但我相信语言是相通的,它们的实现机制应该也差不多. 1.What 什么是顺序表和单链表 ①顺序表: 顺序表是在计算机内存中以数 ...

  9. 线性表、顺序表和链表,你还分不清?

    摘要:其实说实话,可能很多人依然分不清线性表,顺序表,和链表之间的区别和联系! 本文分享自华为云社区<程序员必会自己设计线性表(顺序表.链表)>,原文作者:bigsai. 前言 其实说实话 ...

最新文章

  1. Sublime Text 2/3 配置文件详解
  2. Objective-c——UI基础开发第十二天(相册展示)
  3. 使用 VS2013 Update 4 编译 Notepad++ 6.8.1
  4. SharePoint 数据库管理-PowerShell
  5. Gym - 102361A Angle Beats(几何)
  6. mysql锁在粒度上分为_mysql锁的简单理解
  7. 研究生量子计算机专业,量子计算机研究.PDF
  8. android arial字体,Arial字体大小
  9. 比较两个不同版本Word文档 Word文档比较差异
  10. 纯技术上来说,《看门狗》里的各种骇客技术有可能实现吗?
  11. 腾讯天龙八部手游服务器账号上线,天龙八部手游服务器的注册已达到上限 服务器注册上限怎么解决...
  12. html中图片旋转木马,教你怎么用CSS3做一个图片的旋转木马效果
  13. 你所想了解的方正快速开发平台
  14. java 参数命名规则_Java命名规范
  15. java模板方法模式_Java设计模式之模板方法模式
  16. 深入理解示波器探头各种作用及工作原理
  17. linux 源码搭建lnmp_LINUX CENTOS 6.5下源码搭建LNMP
  18. (附源码)springboot闲置衣物捐赠系统 毕业设计 021009
  19. #453 原汤话原食:除夕夜请热心市民陪我销毁一下烟花爆竹
  20. “光庭杯”第五届华中北区程序设计邀请赛 暨 WHU第八届程序设计竞赛(部分解题报告)

热门文章

  1. 西部数据硬盘支持linux,西部数据开发新的Linux文件系统“Zonefs” 支持在分区块设备上运行...
  2. java任何表达式都可以当作语句_在Java语言中语句用分号终止,并不是所有的表达式都可以构成语句...
  3. tp中的M,D,C,A,I,S方法
  4. python爬取歌曲评论并进行数据可视化
  5. 公布自己的pods到CocoaPods trunk 及问题记录
  6. bootstrap去掉表格边框
  7. java删除文件夹的所有文件
  8. Python 爬虫小程序(正则表达式的应用)
  9. 淘宝技术沙龙「系统稳定性与性能」的笔记与思考
  10. 北邮王立新教授提到的“5年后运营商排名论”