以顺序存储的顺序表为查找表进行顺序查找,且用冒泡排序法对此线性表排序并打印出来完整代码
时间: 2024-03-18 12:42:36 浏览: 85
C语言实现静态顺序表的实例详解
下面是一个完整的以顺序存储的顺序表为查找表进行顺序查找,并使用冒泡排序算法对此线性表进行排序并打印出来的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef int ElemType; // 假设表中元素类型为整型
typedef struct {
ElemType data[MAXSIZE]; // 存储表中元素的数组
int length; // 表的当前长度
} SqList;
// 冒泡排序算法
void BubbleSort(SqList *L) {
int i, j;
for (i = 0; i < L->length - 1; i++) {
for (j = 0; j < L->length - 1 - i; j++) {
if (L->data[j] > L->data[j+1]) {
ElemType temp = L->data[j];
L->data[j] = L->data[j+1];
L->data[j+1] = temp;
}
}
}
}
// 顺序查找算法
int SeqSearch(SqList L, ElemType key) {
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == key) {
return i;
}
}
return -1; // 查找失败
}
int main() {
SqList L;
int i, result, key;
// 初始化顺序表
L.length = 10;
for (i = 0; i < L.length; i++) {
L.data[i] = rand() % 100; // 随机生成 0~99 的整数
}
// 输出顺序表中的元素
printf("顺序表中的元素为:");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
// 进行冒泡排序
BubbleSort(&L);
// 输出排序后的顺序表
printf("排序后的顺序表为:");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
// 进行顺序查找
printf("请输入要查找的元素:");
scanf("%d", &key);
result = SeqSearch(L, key);
// 输出查找结果
if (result != -1) {
printf("查找成功,元素 %d 在表中的位置为 %d\n", key, result);
} else {
printf("查找失败,元素 %d 不在表中\n", key);
}
return 0;
}
```
在这个示例中,我们在原来的基础上增加了一个 `BubbleSort` 函数,用来对顺序表进行冒泡排序。在 `main` 函数中,我们先初始化了一个长度为 10 的顺序表,并输出表中的元素;然后调用 `BubbleSort` 函数对表进行排序,并输出排序后的结果;最后让用户输入要查找的关键字,调用 `SeqSearch` 函数进行查找,并输出查找结果。
阅读全文