先创建一个SqList.h的头文件:
#pragma once
#define ElemType int
#define MAXSIZE 50
typedef struct {
ElemType data[MAXSIZE];//顺序表存储的内容
int length;//长度
}SqList;
void InitList(SqList &L);//初始化
int Length(SqList &L);//求长度
int LocateElem(SqList &L, ElemType e);//找到e的位置
ElemType GetElem(SqList &L, int i);//找到i位置的内容
bool ListInsert(SqList &L, int n, ElemType e);//将元素e插入到n位置
bool ListDelect(SqList &L, int n, ElemType &e);//将位置n的元素取出至e,并在顺序表中删除
void Print(SqList&L);//打印顺序表
bool Empty(SqList L);//判断表是否为空
注:其中位置 i 从1开始,数组下标从0开始。
再创建一个SqList.cpp的cpp文件,实现顺序表操作的函数:
#include"SqList.h"
#include<stdio.h>
void InitList(SqList &L){
L.length = 0;
}
int Length(SqList &L) {
return L.length;
}
int LocateElem(SqList &L,ElemType e) {//查找e的位置
for (int i = 1; i <=L.length; i++)
{
if (L.data[i-1] == e)
return i;
}
return -1;
}
ElemType GetElem(SqList &L, int i) {//查找i的元素
return L.data[i-1];
}
bool ListInsert(SqList &L,int n,ElemType e) {
if (n<1 || n>L.length + 1)
return false;
if (L.length == MAXSIZE)
return false;
for (int i = L.length; i>=n; i--)
{
L.data[i] = L.data[i-1];
}
L.data[n - 1] = e;
L.length++;
return true;
}
bool ListDelect(SqList &L, int n, ElemType &e) {
if (n<1 || n>L.length)
return false;
e = L.data[n - 1];//返回删除的数
for (int i = n; i < L.length; i++)
{
L.data[i - 1] = L.data[i];
}
L.length--;//长度减少
return true;
}
void Print(SqList&L) {
for (int i = 1; i <=L.length; i++)
{
printf("%d ",L.data[i-1]);
}
}
bool Empty(SqList L) {
if (L.length == 0)
return true;
return false;
}