概述
一、线性表
线性表是n个具有相同特性的数据元素的有限序列。
二、顺序表
顺序表:线性表采用顺序存储的方式存储。
顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
1、顺序表头
#define MAX 1000
typedef int datatype;
struct Seq_list
{
datatype arr[MAX];
int length;
};
初看到顺序表,相信很多人跟我一样觉得就是数组。但是可以从表头看出,顺序表区别于数组的地方,就是length。这个参数可以记录顺序表的真实长度,给我们带来很大便利。
2、顺序表置空
void init(Seq_list *slt)
{
slt->length=0;
}
3、顺序表尾部添加一个x
void add(Seq_list *slt,datatype x)
{
if(slt->length==MAX)
{
cout<<"顺序表已满!"<<endl;
return;
}
slt->arr[slt->length]=x;
slt->length+=1;
}
4、顺序表打印
void print(Seq_list slt)
{
if(slt.length==0) cout<<"顺序表为空!n";
else
for(int i=0;i<slt.length;i++)
printf("%5d",slt.arr[i]);
}
5、判断顺序表是否为空
bool empty(Seq_list slt)
{
return slt.length==0?1:0;
}
//为空返回1,否则返回0
6、查找顺序表中值为x的结点位置
int find(Seq_list slt,datatype x)
{
int i=0;
while(i<slt.length&&slt.arr[i]!=x) i++;
return i<slt.length?i:-1;
//找到返回位置i;找不到返回-1
}
7、取出顺序表第i个数
int get(Seq_list slt,int i)
{
if(i<0||i>slt.length)
{
cout<<"越界!"<<endl;
exit(1);
}
else return slt.arr[i];
}
8、在顺序表的position处插入x
void insert(Seq_list *slt,datatype x,int position)
{
if(position<0||position>slt->length)
{
cout<<"越界!"<<endl;
exit(1);
}
if(slt->length==MAX)
{
cout<<"顺序表已满,无法插入!"<<endl;
exit(1);
}
for(int i=slt->length;i>position;i--) slt->arr[i]=slt->arr[i-1];
slt->arr[position]=x;
slt->length++;
}
9、删除顺序表的第position个数
void delet(Seq_list *slt,int position)
{
if(slt->length==0)
{
cout<<"顺序表为空!"<<endl;
exit(1);
}
if(position<0||position>slt->length)
{
cout<<"越界!"<<endl;
exit(1);
}
for(int i=position;i<slt->length-1;i++)
slt->arr[i]=slt->arr[i+1];
slt->length--;
}
三、顺序栈
在上面我们可以看出,顺序表其实就是把一个数组的大小表示出来了,而对于栈,我们只需要用top表示栈顶。
对栈的操作一般有初始化、判断是否为空、取得栈顶元素、删除、插入。
栈是一种特殊的数据结构,它遵循后进先出的原则,所以插入和删除都是对于栈顶元素而言。
四、队列
队列则是要求先进先出。但是顺序队列可用性太差,不提。
最后
以上就是紧张帆布鞋为你收集整理的数据结构——线性表及其顺序存储的全部内容,希望文章能够帮你解决数据结构——线性表及其顺序存储所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复