线性表的基本操作
作者:
小鱼.
,
2022-05-01 21:29:44
,
所有人可见
,
阅读 208
考研数据结构线性表的各种操作(存储结构为顺序表)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#define MaxSize 50
#define ElemType int
#define Status int
typedef struct{
ElemType data[MaxSize];
int length = 0;
}SqList;
//初始化顺序表
Status InitList(SqList &L)
{
//memset(L.data,0,sizeof L);
L.length=0;
return 0;
}
//创建顺序表
bool createList(SqList &L, int n)
{
if(n<1 || n>MaxSize) return false;
// L.length = 0;
for(int i=0;i<n;i++)
{
scanf("%d",&L.data[i]);
L.length++;
}
return true;
}
//在顺序表第i个位置插入新元素e,时间复杂度位O(n)
bool ListInsert(SqList &L,int i,int e)
{
if(i<1 || i>L.length+1) return false;
if(L.length>=MaxSize) return false;
for(int j=L.length;j>=i;j--)
{
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
return true;
}
//删除顺序表第i个位置的元素,时间复杂度位O(n)
bool ListDelete(SqList &L,int i,ElemType &e)
{
if(i<1 || i>L.length) return false;
e=L.data[i-1];
for(int j=i;j<L.length;j++)
{
L.data[j-1]=L.data[j];
}
L.length--;
return true;
}
//按值查找,时间复杂度位O(n)
int LocateElem(SqList L,ElemType m)
{
int i;
for(int i=0;i<L.length;i++)
{
if(L.data[i]==m)
return i+1;
}
return 0;
}
//按位查找,时间复杂度位O(1)
int GetElem(SqList L,int i)
{
return L.data[i-1];
}
//打印出顺序表
void print(SqList L)
{
for(int i=0;i<L.length;i++)
{
cout<<L.data[i]<<' ';
}
cout<<endl;
}
int main()
{
SqList L;
int e,m=3;
createList(L,3);
//InitList(L);
ListDelete(L,2,e);
//cout<<e<<endl;
cout<<LocateElem(L,m)<<endl;
cout<<GetElem(L,1)<<endl;
print(L);
return 0;
}