编写函数FindList(L,x)查找顺序表中的值为x的数据并返回索引,如果没找到则返回-1
#include "stdafx.h"
#include "SeqList.h"
int main()
{
SeqList myList ;
ListInitiate(&myList);//初始化顺序表,长度为0
for (int i = 0; i < 10; i++) {//赋初值
ListInerst(&myList, i, i + 1);
printf("%d ", myList.list[i]);
}
int value;//要查找的数据
printf("
输入要查找的数据:
");
scanf("%d", &value);
int index = ListFind(myList, value);//数据索引
if(index != -1)//如果有这个数据,打印数据索引
printf("值为 %d 的索引为 %d ", value, index);
return 0;
}
/*
输出:
1 2 3 4 5 6 7 8 9 10
输入要查找的数据:
5
值为 5 的索引为 4
*/
SeqList.h下载地址:SeqList.h头文件
SeqList.h源码:
#pragma once
#include "stdio.h"
#define MaxSize 100
typedef int DataType;
typedef struct {
DataType list[MaxSize];
int size;
}SeqList;
void ListInitiate(SeqList *L) {//初始化顺序表
L->size = 0;
}
int ListLength(SeqList L) {//返回顺序表长度
return L.size;
}
int ListInerst(SeqList *L, int i, DataType x) {//插入元素
int j;
if (L->size >= MaxSize) {
printf("顺序表已满无法插入!");
return -1;
}
else if (i<0 || i>L->size) {
printf("输入参数有误!");
return -1;
}
else {
for (int j = L->size; j > i; j--)
L->list[j] = L->list[j - 1];
L->list[i] = x;
L->size++;
return 1;
}
}
int ListDelete(SeqList *L, int i, DataType *x) {//删除元素
int j;
if (L->size <= 0) {
printf("顺序表已空,无数据可删!");
return -1;
}
else if (i<0 || i>L->size - 1) {
printf("输入参数有误!");
return -1;
}
else {
*x = L->list[i];
for (j = i + 1; j <= L->size - 1; j++)
L->list[j - 1] = L->list[j];
L->size--;
return 1;
}
}
int ListGet(SeqList L, int i, DataType *x) {//取出索引为i处的元素
if (i < 0 || i>L.size - 1) {
printf("参数不合法!");
return -1;
}
else {
*x = L.list[i];
return 1;
}
}
int ListFind(SeqList L, DataType x) {//查找元素并返回索引
int i;
bool hasFind = false;
for (i = 0; i < L.size; i++) {
if (x == L.list[i]) {
return i;
hasFind = true;
break;
}
}
if (!hasFind) {
printf("顺序表中没有该数据!
");
return -1;
}
}