运用线性表实现函数的查找、删改、查询
#include <iostream>
#define MaxSize 100
using namespace std;
typedef int ELemType;
typedef struct
{
ELemType data[MaxSize];
int length;
} SqList;
//初始化线性表
void InitList(SqList &L)
{
L.length=0;
}
//销毁线性表
void DestroyList(SqList L)
{
}
int GetLength(SqList L)
{
return L.length;
}
//求线性表长度运算
int GetElem(SqList L,int i,ELemType&e)
{
if(i<1||i>L.length)
return 0;
else
{
e=L.data[i-1];
return 1;
}
}
//求线性表中第i个元素
int Locate(SqList L,ELemType x)
{
int i=0;
while (i<L.length&&L.data[i]!=x)
i++;
if(i>=L.length) return(0);
else return(i+1);
}
//添加元素
int InsElem(SqList &L,ELemType x,int i)
{
int j;
if(i<1||i>L.length+1)
return 0;
for(j=L.length;j>i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=x;
L.length++;
return 1;
}
//删除元素
int DelELem(SqList&L,int i)
{
int j;
if(i<1||i>L.length+1)
return 0;
for(j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return 1;
}
//输出元素
void DispList(SqList L)
{
int i;
for(i=0;i<L.length;i++)
printf("%d ",L.data[i]);
printf("\n");
}
int main()
{
int i, n, e;
SqList L;
InitList(L);
printf("请输入线性表元素个数: ");
scanf("%d", &n);
printf("请输入线性表元素: ");
for (i=1;i<=n;i++)
{
scanf("%d", &e);
InsElem(L, e, i);
}
printf("线性表:");
DispList(L);
printf("长度:%d\n", GetLength(L));
printf("请输入查找位置: ");
scanf("%d",&i);
GetElem(L, i, e);
printf("第%d个元素:%d\n", i, e);
printf("请输入查找元素: ");
scanf("%d",&e);
printf("元素%d所在的位置是:%d\n", e, Locate(L, e));
printf("请输入所删除元素的位置: ");
scanf("%d",&i);
printf("删除第%d个元素\n", i);
DelELem(L, i);
printf("线性表:");
DispList(L);
printf("长度:%d\n", GetLength(L));
return 0;
}
运行结果如图: