顺序表之顺序存储 基本操作c++实现

//顺序存储
#include
using namespace std;
typedef int elemtype; //int 可替换成其他数据类型

define maxsize 100

typedef struct
{
elemtype *data; //数据
int length; //表长
}sqlist;

//1.初始化操作
/*
步骤:
1.为顺序表l分配一个内存空间,使*data指向首地址
2.将表的长度设为0
*/
bool zerolist(sqlist &l)
{
l.data=new elemtype[maxsize];
if(!l.data) return false;
l.length=0;
return true;
}

//2.取值
/*
步骤:
1.判断取值的位置i是否合理,注意这里的i的取值(1= 2.将i位置的值l.data[i-1]赋值给e
*/
bool getelem(sqlist l,int i,int &e)
{
if(i<1||i>l.length) return false;
e=l.data[i-1];
return true;
}

//3.查找
/*
步骤:
1.遍历data[],依次与e比较,若找到,返回i+1
2.遍历完,如果没有找到,返回0
*/
int locatelist(sqlist l,int e)
{
for(int i=0;i {
if(e==l.data[i])
return i+1;
}
return 0;
}

//4.insert插入操作
/*
步骤:
1.判断i值是否合法,注意这里i的范围(1= 2.判断顺序表存储空间是否已满
3.将第n个依次向后移动(注意这里的移动使从后向前对换的)
4.将新元素e插入第i个位置
5.表长+1
*/
bool insert(sqlist &l, int i,int e)
{
if(i<1||i>l.length+1) //判断i的范围是否有效
return false;
if(l.length>=maxsize) //当前存储空间已满,不能插入
return false;
for(int j=l.length;j>=i;j–)//注意这里的j的初始值是表长,最终j>=i
{
l.data[j]=l.data[j-1];
}
l.data[i-1]=e;
l.length++;
return true;
}

//5.delete 删除操作
/*
步骤:
1.判断i的值是否合法,注意这里i的范围(1<=i<=n)
2.将第i+1个元素至第n个元素依次向前移动(从第i个开始向后对换位置)
3. 表长-1
*/
bool Delete(sqlist &l,int i)
{
if(i<1||i>l.length)// 判断i值是否合法
return false;
for(int j=i;j {
l.data[j-1]=l.data[j];
}
l.length–;
return true;
}
int main()
{
return 0;
}在这里插入代码片

你可能感兴趣的:(数据结构)