您的位置:首页 > 其它

线性表顺序存储结构的操作

2017-06-28 10:11 267 查看
刚刚开始接触数据结构和算法,写写相关程序练习一下。今天学习了线性表的顺序存储结构,涉及到线性表的创建,初始化,获取元素,插入元素的操作,后续操作随后记录。

/************************************************
线性表的顺序存储结构,使用一维数组实现
************************************************/
#include <iostream>
using namespace std;
//创建线性表
const int MaxSize=20;
typedef int elemType;
typedef int status;
typedef struct
{
elemType data[MaxSize];
int length;
}sqList;
//操作2:获取线性表第i个位置的元素
status GetElem(sqList L,int i,elemType* e);
//操作3:线性表第i个位置插入新元素
status InsertElem(sqList* L,int i,elemType e);
//操作4:删除线性表第i个位置元素
status DeleteElem(sqList* L,int i,elemType* e);
int main()
{
sqList L;//线性表L
L.length=5;//线性表L长度为6
//操作1:初始化线性表
int i=0;
while(i<L.length)
{
cin>>L.data[i];
i++;
}
cout<<"输入完毕\n";
//操作2:获取线性表第i个位置的元素
int num1,num2,num3;
elemType* pt=new elemType;
cin>>num1;
cout<<"获取线性表第"<<num1<<"个元素\n";
GetElem(L,num1,pt);
cout<<"线性表第"<<num1<<"个元素:"<<*pt<<endl;
//操作3:线性表第i个位置插入新元素
elemType eInsert;
cin>>num2>>eInsert;
cout<<"插入到线性表第"<<num2<<"个位置\n";
InsertElem(&L,num2,eInsert);
for (int i=0;i<L.length;i++)
{
cout<<"现在线性表"<<i+1<<"的位置为:"<<L.data[i]<<endl;
}
//操作4:删除线性表第i个位置元素
elemType* eDelete=new elemType;
cin>>num3;
cout<<"删除线性表第"<<num3<<"个位置元素\n";
DeleteElem(&L,num3,eDelete);
cout<<"删除的元素是:"<<*eDelete<<endl;
for (int i=0;i<L.length;i++)
{
cout<<"现在线性表"<<i+1<<"的位置为:"<<L.data[i]<<endl;
}

return 0;
}
//操作2:获取线性表第i个位置的元素
status GetElem(sqList L,int i,elemType* e)
{
if (L.length==0 || i>L.length)
return 0;
*e=L.data[i-1];
return 1;
}
//操作3:线性表第i个位置插入新元素
status InsertElem(sqList* L,int i,elemType e)
{
int k;
if (L->length==MaxSize)//线性表已满
return 0;
else
{
if (i<1 || i>L->length+1)
return 0;
else{
if (i<=L->length)
{
for (k=L->length-1;k>=i-1;k--)
{
L->data[k+1]=L->data[k];
}
}
}
}
L->data[i-1]=e;
L->length++;
return 1;
}
//操作4:删除线性表第i个位置元素
status DeleteElem(sqList* L,int i,elemType* e)
{
if (i<1 || i>L->length)
return 0;
*e=L->data[i-1];
for (int k=i;k<L->length;k++)
{
L->data[k-1]=L->data[k];
}
L->length--;
return 1;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: