大三今日总结.
本题要求实现六个函数,顺序表为整型数据,可实现输入、输出、取值、查找、插入、删除功能。输入样例与输出样例对应情况见下图。
顺序表描述的结构体为
typedef struct {
ElemType *elem; //存储空间的基地址
int length; //当前长度
} SqList;
需要实现函数的接口分别为:
int GetElem(SqList L, int i, ElemType &e) 顺序表的取值
判断i值是否合理,若不合理,返回0;[i-1]单元存储第i个数据元素; 返回1
int LocateElem_Sq(SqList L, double e) 顺序表的查找
查找成功,返回序号i+1;查找失败,返回0
int ListInsert_Sq(SqList &L, int i, ElemType e)顺序表的插入
判断i值,不合法返回0;当前存储空间已满,返回0;插入位置及之后的元素后移;将新元素e放入第i个位置;表长增1;返回1
int ListDelete_Sq(SqList &L, int i)顺序表的删除
判断i值,不合法返回0;被删除元素之后的元素前移;表长减1;返回1
void ListInput(SqList &L)顺序表数据的输入
输入顺序表长度;依次输入数据;表长赋值
void ListOutput(SqList L)顺序表数据的输出
int GetElem(SqList L, int i, ElemType &e) {
if (i < 1 || i > L.length) {
return 0;
}
e = L.elem[i - 1];
return 1;
}
int LocateElem_Sq(SqList L, double e) {
for (int i = 0; i < L.length; i++) {
if (L.elem[i] == e) {
return i + 1;
}
}
return 0;
}
int ListInsert_Sq(SqList &L, int i, ElemType e) {
if (i < 1 || i > L.length + 1) {
return 0;
}
if (L.length == MAXSIZE) {
return 0;
}
for (int j = L.length; j >= i; j--) {
L.elem[j] = L.elem[j - 1];
}
L.elem[i - 1] = e;
L.length++;
return 1;
}
int ListDelete_Sq(SqList &L, int i) {
if (i < 1 || i > L.length) {
return 0;
}
for (int j = i; j < L.length; j++) {
L.elem[j - 1] = L.elem[j];
}
L.length--;
return 1;
}
void ListInput(SqList &L) {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> L.elem[i];
}
L.length = n;
}
void ListOutput(SqList L) {
for (int i = 0; i < L.length; i++) {
cout << L.elem[i] << " ";
}
cout << endl;
}

浙公网安备 33010602011771号