#include <stdio.h>
// 顺序表的删除和查找
#define MaxSize 50
typedef int ElemType; // 让顺序表存储其他类型数据时,可以快速完成修改
typedef struct{
ElemType data[MaxSize];
int length; // 顺序表的长度
}SqList;
// 打印顺序表
void PrintList(SqList L){
int i;
for(i=0; i<L.length; i++){
printf("%3d", L.data[i]);
}
printf("\n");
}
// 删除顺序表中的元素
// i是删除的“位置”
// e用于保存取出的删除的元素
bool ListDelete(SqList &L, int i, ElemType &e){
// 判断删除的元素的位置是否合法
if(i<1 || i>L.length){
return false;
}
e = L.data[i-1]; // 首先保存要删除元素的值
int j;
for(j=i; j<L.length; j++){
L.data[j-1] = L.data[j];
}
L.length--; // 顺序表长度减1
return true;
}
// 查找某个元素的位置
// 找到了就返回对应的位置,没找到就返回0
int LocateElem(SqList L, ElemType element){
int i;
for(i=0; i<L.length; i++){
if(element == L.data[i]){
return i+1; // i是索引,i+1才是位置
}
}
return 0;
}
int main() {
// 初始化顺序表
SqList L;
bool ret; // ret用来装函数的返回值
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.length = 3;
// 顺序表删除
ElemType del;
ret = ListDelete(L,1,del);
if(ret){
printf("delete sqlist success\n");
printf("del element = %d\n", del);
PrintList(L);
}else{
printf("delete sqlist failed\n");
}
printf("-----------------------\n");
// 顺序表查找
int pos; // 存储元素位置
pos = LocateElem(L,2);
if(pos){
printf("find this element, location %d\n", pos);
}else{
printf("can't find this element\n");
}
return 0;
}
【数据结构】顺序表的删除和查找
最新推荐文章于 2024-01-02 10:29:37 发布