.h文件
#include<stdio.h>
#include<malloc.h>
#define MaxSize 100
typedef int ElemType;
typedef struct{
ElemType elem[MaxSize];
int length;
}SqList;
//初始化
void InitList(SqList &L)
{
L.length=0;
}
//清空
void ClearList(SqList &L)
{
L.length=0;
}
//判断是否为空
bool ListEmpty(SqList L)
{
return (L.length==0);
}
//求长度
int ListLength(SqList L)
{
return L.length;
}
//输出线性表
void DispList(SqList L)
{
for(int i=0;i<L.length;i++)
printf("%4d",L.elem[i]);
printf("\n");
}
//求数据元素值
bool GetElem(SqList L,int i,ElemType &e){
if(i<1||i>L.length)
return false;
e=L.elem[i-1];
return true;
}
//按值查找元素
int LocateElem(SqList L,ElemType e)
{
for(int i=0;i<=L.length;i++)
{
if(L.elem[i]==e)
return i+1;
}
return 0;
}
// 插入数据元素
bool ListInsert(SqList &L,int i,ElemType e)
{
if(L.length==MaxSize)
return false;
if(i<1||i>L.length+1)
return false;
i--;
for(int j=L.length;j>=i;j--)
L.elem[j]=L.elem[j-1];
L.elem[i]=e;
L.length++;
return true;
}
//整体创建
void Createlist(SqList &L,ElemType a[],int n)
{
int i;
for(i=0;i<n;i++)
L.elem[i]=a[i];
L.length=n;
}
//删除线性表
bool ListDelete(SqList &L,int i)
{
if(i<1||i>L.length)
return false;
for(int j=i;j<L.length;j++)
L.elem[j-1]=L.elem[j];
L.length--;
return true;
}
//并集
void Merge(SqList &LA,SqList &LB){
ElemType x;
int i,k;
for(i=0;i<LB.length;i++)
{
x=LB.elem[i];
k=LocateElem(LA,x);
if(k==0)
{
ListInsert(LA,LA.length,x);
LA.length++;
}
}
}
.cpp文件验证是否正确
#include"SqList.h"
int main(){
SqList L;
printf("(1)初始化线性表\n");
InitList(L);
/*printf("(2)依次插入5个数\n");
ListInsert(L,1,8);
ListInsert(L,2,10);
ListInsert(L,3,12);
ListInsert(L,4,16);
ListInsert(L,5,18); */
int a[]={8,10,12,16,18};
Createlist(L,a,5);
printf("(3)输出线性表:\n");
DispList(L);
printf("(4)表长度为:%d\n",ListLength(L));
printf("(5)判断表为%s\n",ListEmpty(L)?"空":"非空");
int e;
GetElem(L,5,e);
printf("(6)第5个元素为%d\n",e);
printf("(7)输出元素16的位置为:%d\n",LocateElem(L,16));
ListInsert(L,5,14);
printf("(8)在第5个元素的位置插入14这个元素\n");
printf("(9)输出表");
DispList(L);
printf("(10)删除第5个元素\n");
ListDelete(L,5);
printf("(11)输出表");
DispList(L);
printf("(12)清空表\n");
ClearList(L);
printf("(13)判断是否为空\n");
printf("表为%s\n",ListEmpty(L)?"空":"非空");
}
运行结果:
(1)初始化线性表
(3)输出线性表:
8 10 12 16 18
(4)表长度为:5
(5)判断表为非空
(6)第5个元素为18
(7)输出元素16的位置为:4
(8)在第5个元素的位置插入14这个元素
(9)输出表 8 10 12 16 14 18
(10)删除第5个元素
(11)输出表 8 10 12 16 18
(12)清空表
(13)判断是否为空
表为空