线性表顺序查找的代码
时间: 2024-06-11 10:02:06 浏览: 18
线性表顺序查找的代码如下:
```
int Sequential_Search(int* A, int n, int key)
{
int i;
for(i=0; i<n; i++)
if(A[i] == key)
return i;
return -1;
}
```
其中,参数`A`是指向待查找的线性表的指针,参数`n`是线性表中元素的个数,参数`key`是要查找的元素。函数返回值为找到的元素在线性表中的下标,若未找到则返回-1。
相关问题
线性表顺序存储代码实现
线性表的顺序存储可以通过静态分配和动态分配两种方式实现。静态分配是指使用数组来存储线性表的元素,而动态分配是指使用指针和malloc函数来分配存储空间。下面是一段简单的代码实现线性表顺序存储:
```
typedef struct {
ElemType data[MaxSize]; // 存放顺序表元素
int length; // 存放顺序表的长度
} SqList;
void InitList(SqList *&L) {
L = (SqList *)malloc(sizeof(SqList)); // 分配存放线性表的空间
L->length = 0; // 顺序表长度置0
}
void DestroyList(SqList *&L) {
free(L); // 释放线性表的空间
}
bool ListEmpty(SqList *L) {
return L->length == 0;
}
int ListLength(SqList *L) {
return L->length;
}
void GetElem(SqList *L, int i, ElemType &e) {
if (i < 1 || i > L->length) {
return;
}
e = L->data[i - 1];
}
int LocateElem(SqList *L, ElemType e) {
for (int i = 0; i < L->length; i++) {
if (L->data[i] == e) {
return i + 1;
}
}
return 0;
}
bool ListInsert(SqList *&L, int i, ElemType e) {
if (i < 1 || i > L->length + 1) {
return false;
}
if (L->length == MaxSize) {
return false;
}
for (int j = L->length - 1; j >= i - 1; j--) {
L->data[j + 1] = L->data[j];
}
L->data[i - 1] = e;
L->length++;
return true;
}
bool ListDelete(SqList *&L, int i, ElemType &e) {
if (i < 1 || i > L->length) {
return false;
}
e = L->data[i - 1];
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j];
}
L->length--;
return true;
}
```
这段代码实现了线性表顺序存储的基本操作,包括初始化线性表、销毁线性表、判断线性表是否为空、获取线性表长度、获取指定位置的元素、查找指定元素的位置、在指定位置插入元素和删除指定位置的元素。
实现线性表的顺序查找算法
顺序查找算法,也称为线性查找算法,是一种简单直观的查找算法。它的基本思想是从线性表的一端开始,逐个对比查找元素,直到找到目标元素或搜索到线性表的末尾为止。
下面是实现线性表的顺序查找算法的示例代码:
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义线性表最大长度
// 定义线性表结构体
typedef struct {
int data[MAXSIZE]; // 存储数据元素
int length; // 线性表长度
} SqList;
// 线性表顺序查找算法
int Search_Seq(SqList L, int key) {
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == key) {
return i; // 查找成功,返回元素下标
}
}
return -1; // 查找失败,返回-1
}
int main() {
SqList L = {{1, 3, 5, 7, 9}, 5}; // 初始化线性表
int key = 5; // 要查找的元素值
int result = Search_Seq(L, key); // 进行顺序查找
if (result == -1) {
printf("查找失败!\n");
} else {
printf("元素%d的位置为%d\n", key, result);
}
return 0;
}
```
在上面的示例代码中,我们先定义了一个结构体 `SqList` 用来表示线性表,其中包括一个数组 `data` 用来存储数据元素,和一个变量 `length` 表示线性表长度。然后定义了一个函数 `Search_Seq` 用来进行线性表的顺序查找,该函数接收两个参数:线性表 `L` 和要查找的元素值 `key`,返回值为目标元素在线性表中的下标,如果查找失败则返回-1。最后在 `main` 函数中初始化了一个线性表 `L`,并进行了一次元素为5的顺序查找。