数据结构:实验三(查找顺序表元素)

编写函数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;
    }
}
原文地址:https://www.cnblogs.com/cnsec/p/13286824.html