创建线性表,以及表中的基本操作
在这个地方我们通过C语言来演示创建线性表以及对线性表的一些操作。
怎样创建一个线性表:
typedef char ElemType
我们创建顺序表都是用来盛放元素,那我们盛放的数据元素,可以是基本的数据类型,也可以是我们自定义的数据类型。
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
所谓的线性表也也就是为自定义的数据结构申请一段内存空空间。然而这个自定义的数据结构,里面的数据元素室友一定的要求的,需要有三个部分是必须的,第一个是我们要存放的数据的类型,第二个是我们要创建的顺序表的长度长度是顺序表中的存放的元素的个数,第三个是顺序表的大小。
int InitSqList(SqList *L)
{
L->elem=(ElemType *)malloc((LIST_INIT_SIZE)*sizeof(ElemType));
if(!L->elem)exit(OVERFLOW);
L->length=0;
L->listsize=LIST_INIT_SIZE;
cout<<"\t\t顺初始化成功\n";
return OK;
}
那么怎样初始化一个顺序表,,首先我们要知道我们初始化顺序表,其实是为我们上面定义的数据结构进行赋值
首先我们是给我需要盛放的元素申请一段内存空间,然后赋值给我们在数据结构中中的元素,其实这个也即是我们初始化一个链表。总之,初始化一个链表就是为我们自定义的结构体进行赋值。
向顺序表中插入一个元素:
int InsertSqList(SqList *L,int i,ElemType e)//向顺序表中插入元素,我们需要给这个函数传递三个参数,一个顺序表一个指针,还有是我们要讲元素插入到顺序表中的位置,还有就是我们要插入的元素。
{//向顺序表中插入元素,需要三个步骤,第一步是检验顺序表是不是已经满
//第二步是判断要插入的位置是不是合法
//当上面两个条件检验完成之后,需要做的是讲顺序表中的要插入的位置后面的元素,向后面进行转移
int j;
if(i<1 && i>L->length)
{
cout<<"插入位置不合法"<<endl;
return 0;
}
else
{
if(L->length==L->listsize)
{
cout<<"顺序表已经满"<<endl;
return 0;
}
for(j=L->length;j>=i;j--)
L->elem[j+1]=L->[j];
//这个for循环就完成了元素的转移,这个地方是有些技巧的,至少我是这样的认为的,因为这个for循环的里面的j的初值是L->length,控制条件是j<=i;其实这个地方,和删除顺序表中的一个元素,是正好相反的。
L->elem[i]=e;
L->length++;
return 1;
}
}
上面是初始化一个顺序表,然后向顺序表中执行一个插入操作。
给出一个元素,能不能判断这个元素顺序表中是不是存在,和如果这个元素是存在的,要给出这个元素在顺序表中的位置
int getElemLocation(SqList *L,ElemType e)
{
int i=0;
for(i=0;i<=L->length && L->elem[i]!=e;i++);//确定元素在表中的位置,其实我们需要的这样的一个循环
if(i>L->length)cout<<"没有找到元素"<<x<<endl;
else
cout<<x<<"在表中的位置是"<<i<<endl;
return 1;
}
//其实从上面我们可以看到的是对顺序表的操作,其实也就是对刚开始我们自定义的结构体的一个操作,然后上面看整个顺序表其实也就是,
那么我们怎样从顺序表中删除一个元素
int deleteElemList(SqList *L,int i)
{
int j;
if(1<=i && i<=L->length)
{
for(j=i;j<=L->length;j++)
{
L->elem[j]=L->elem[j+1];
}
L->length--;
return 1;
}
else
{
cout<<"位置不合法"<<endl;
return 0;
}
}
//删除顺序表中的需要执行的操作是首先是检验位置是不是合法的,当检验了位置之后,我们需要进行的操作是检验我们要删除的元素的位置是不是合法的,第二步当位置合法之后,我们需要做的是将顺序表i之后的元素位置doublet向前移动一个位置。
那么怎样来显示顺序表中的元素:
int showElem(SqList *L)
{
//首先是判断这个顺序表是不是存在
if(!L->elem)
{
cout<<"顺序表不存在"<<endl;
return 0;
}
else
{
for(int i=1;i<=L->length;i++)
cout<<L->elem[i]<<endl;
}
}
//上面顺序表中的元素doublet输出,这个地方要判断的是顺序表是不是存在。
到这个地方我们对顺序表的操作已经完成了。
创建线性表,以及表中的基本操作相关推荐
- 线性表-顺序表的基本操作
线性表的定义和特点 线性表:由n(n≥0)个数据特性相同的元素构成的有限序列 线性表中元素的个数n(n≥0)称为线性表的长度 空表:n=0 对于非空的线性表或线性结构,特点为: 存在唯一的一个被称作& ...
- 计算机软件技术 上海电力学院,上海电力学院 计算机软件技术 实验三 用头插法和尾插法创建线性表...
上海电力学院计算机软件技术实验三用头插法和尾插法创建线性表 #include #define MAXLEN 9 struct table {int key; int othererm; } ; typ ...
- hive 导出json格式 文件_hive中创建hive-json格式的表及查询
在hive中对于json的数据格式,可以使用get_json_object或json_tuple先解析然后查询. 也可以直接在hive中创建json格式的表结构,这样就可以直接查询,实战如下(hive ...
- 【Hive】如何在 Hive 中创建外部表映射 Hbase 中已存在的表
文章目录 一.上传完整的jar文件到hive/lib中 二.修改hive-site.xml 三.修改hive-env.sh 四.在hive和hbase中分别创建相关联的表并通过hive向hbase表中 ...
- php创建多个数据表,PHP-无法在数据透视表中创建多个多对多关系
我正在尝试在Laravel 5中创建一个应用程序,该程序可以跟踪患者的体检,以便创建患者历史记录,我使用Eloquent作为模型抽象建议. 为此,我使用laravel迁移创建了三个表和一个枢轴表,如下 ...
- 依据sh_goods的结构与数据,在mydb数据库中创建一张tm_goods表,并将价格在20到50之间的商品价格减5元,库存量再新增300件。
依据sh_goods的结构与数据,在mydb数据库中创建一张tm_goods表,并将价格在20到50之间的商品价格减5元,库存量再新增300件. CREATE TABLE mydb.tm_goods ...
- Mongodb 数据库基本操作语句,结合 Node.js + express + mongoose (实现增、删、改、查,批量增加、修改等,创建临时表,多表查询......)
版本说明 "MongoDB": "4.0.9", // cmd命令窗输入:mongo --version "node": 10.13.0, ...
- mysql数据库初识 使用数据库,创建表,表中数据增删改 自用笔记
#指定数据库 表在数据库中创建用来存储数据 USE kj13test; #创建表 /** 狗信息 dogId dogName dogType dogAge 1001 小白 二哈 2 10 ...
- 在MySQL中如何用SQL命令创建数据库及数据表
HRELLO 大家好! 上期给大家讲解了,MySQL数据库常用的管理命令.现在,给大家讲解,如何用SQL命令在MySQL中创建一个数据库及数据表. 在学习前,我们首先要了解,SQL命令是什么? SQL ...
最新文章
- 两年伯克利数学博士毕业,蝉联阿里数学竞赛金奖,张钺:我就是个普通人
- IDEA中创建类时,自动在文件头中添加作者以及创建时间
- RBM/DBN训练中的explaining away概念
- 智能车复工日记【7】:关于会车的图像问题
- 1115. Counting Nodes in a BST (30) 数据结构
- scanf( )函数的返回值
- 手写 Object.create
- NYOJ458 - 小光棍数
- JavaScript常见设计模式梳理
- Oracle笔记整理
- 小鱼易连手机显示无法连接服务器,小鱼易连怎么投屏到电视 小鱼易连app手机无线投屏使用方法...
- 如何应用计算机键盘截图,怎么在电脑中使用键盘截图?
- ubuntu装指定分区_安装Ubuntu16.04系统步骤详细加分区
- 第三方直播SDK对比|直播SDK如何选型
- 暧昧散场,穿过你的黑发我的手968
- 创新电影院布局5G+4K,移动电影院成放映领域的“黑科技”
- Java-枚举类enum及常用方法
- MySQL的一级索引和二级索引
- Centos7:solr伪集群(SolrCloud)搭建
- win11 Azure DK环境