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


    编写函数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;
        }
    }
  • 相关阅读:
    配置ssl(阿里云+腾讯云)
    使用Nativefier将web页面打包为桌面应用
    临时切换淘宝源下载包
    ajax实现异步上传多图并且预览
    通过phpexcel插件导出报表功能实现
    ThinkPHP5.0自定义命令行的使用
    Longest Substring Without Repeating Characters
    计算机操作系统巡回置换算法
    HDU 2041 DP
    HDU 2044 DP (fibonacci)
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286824.html
Copyright © 2020-2023  润新知