IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> [数据结构] 顺序表的创建、取值、查找、插入和删除 -> 正文阅读

[数据结构与算法][数据结构] 顺序表的创建、取值、查找、插入和删除

作者:recommend-item-box-tow

概述:

顺序表为线性表的顺序存储结构,且这种线性存储结构是一种随机存取的存储结构。

分析:一个一元多项式顺序表中有系数和指数

一元多项式顺序存储结构示意图
elem[0]elem[1]elem[2]......elem[length-1]

//空闲区....

a_{1}a_{2}a_{3}......a_{length}

所以在构造顺序表之前,我们先要定义一个需要用到的变量的结构类型

#define MAXSIZE 100? ? ? ? ? ? //设置顺序表的最大长度

typedef struct???????????????????? ? ?? //创造一个结构类型

{

??? foat? coef;?????????????????????? ? ?? //系数

??? int expn;????????????????????????? ? ? //指数

}Ploynomial;?????????????????????? ? ?? //结构体类型为Ploynomial(名字)

当然,如果有别的需求可以将结构类型里的变量换一换,所以在以下的结构类型中,将以ElemType为名字表示关于变量的结构类型

一、创建顺序表

有了以上的结构类型,就可以定义一个多项式的顺序存储结构的类型了

#define MAXSIZE 100??????? //顺序表的最大长度(其实刚刚已经有定义了)
typedef struct
{
??? ElemType *elem;??????????? //开辟一个存储空间的基地址
??????????????????????????????????? ? ? ?? //ElemTypp为刚刚创建了的结构类型
??? int length;????????? ? ? ? ? ? ?? //用来存储顺序表的当前长度
}SqList;??????????? ? ? ? ? ? ?? ????? //顺序表的结构类型为Sqlist

然后将顺序表初始化,令这个初始化顺序表的函数名为InitList()

Status InitList(SqList &L)???????????????? //L为线性表,SqList为刚刚创建了的结构类型
{//构造一个空的顺序表
??? L.elem=new ElemType[MAXSIZE];????????? //为顺序表分配一个大小为MAXSIZE的数组空间
???

??? // C的写法为:
??? //L.data(Elemtype *malloc(sizeof(ElemType[MAXSIZE])))
??? //malloc(m)------开辟m字节的长度的地址空间并返回首地址
??? //sizeof(x)--------x长度
??? if( !L.elem ) exit (OVERFLOW);
??? L.length=0;
??? return OK;
}

二、顺序表的取值

Status GetElem(SQList L,int i,ElemType &e)

{//取值e,i为e所在的位置喜好

??? if( i<1 || i>L.length )? return ERROR;???? //i值不合法,返回ERROR

//i是顺序表的索引,顺序表再咋样i也不能小于1撒,同样i也不能大于线性表

??? e=L.elem[i-1];??????? //注意:elem[i-1]单元存储第i个元素,elem索引从0开始

??? return OK;

}

三、顺序表的插入

Status ListInsert(SqList &L,int i,ElemType e)
{
??? if( (i<1)||(i>L.length+1)) return ERROR;??????? ? ? ? ?? //i值不合法
??? if(L.length==MAXSIZE) return ERROR;??????????????? //当前的存储空间已满
??? for(j=L.length-1;j>=i-1;j--)
??? {
??????? L.elem[j+1]=L.elem[j];???????????????????????? //把要插入的位置之后的元素往后移
??? }
??? L.elem[i-1]=e;???????????????????????????????????? //将新元素e插入第i个位置
??? ++L.length;??????????????????????????????????????? //表长加1
??? return OK;
}

四、顺序表的删除

Status ListDelete(SqList &L,int i)
{
??? if((i<1)||(i>L.length)) return ERROR;??????? //i值不合法
??? for(j=i;j<=L.length-1;j--)
??? {
??????? L.elem[j-1]=L.elem[j];?????????????????? //被删除元素后面的元素往前移(覆盖被删除元素)
??? }
??? --L.length;????????????????????????????????? //表长减1
??? return OK;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:27:45  更:2021-08-03 11:29:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 12:13:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码