01 顺序表查找

CODE

#include <iostream>
#define MAXSIZE 20
#define INITIAL_SIZE 20

// 1. 按位置查找 (时间复杂度为O(1))
typedef struct{
    int data[MAXSIZE];
    int length;
}SequenceList01;

typedef struct{
    int *pt;
    int length;
    int maxsize;        // 最大容量
}SequenceList02;

void initialize01(SequenceList01 &L){
    for(int i = 0; i < MAXSIZE; i++){
        L.data[i] = 0;
    }
    L.length = 0;
}

void initialize02(SequenceList02 &L){
    L.pt = (int*) malloc(sizeof(int)*INITIAL_SIZE);
    L.length = 0;
    L.maxsize = INITIAL_SIZE;
}

int getElement01(SequenceList01 L,int place){
    if (place > L.length || place < 1){
        return false;
    }
    return L.data[place-1];
}

int getElement02(SequenceList02 L,int place){
    if (place > L.length || place < 1){
        return false;
    }
    int element = *(L.pt + place - 1);
    return element;
}

// 2. 按值查找

int search(SequenceList01 L, int number){
    for (int i = 0; i < L.length; i++){
        if (number == L.data[i]){
            return i+1;
        }
    }
    return false;
}

int main() {
    SequenceList01 L1;
    initialize01(L1);
    SequenceList02 L2;

    // 简单初始化一下
    L1.data[0] = {1};
    L1.data[1] = {2};
    L1.data[2] = {3};
    L1.length = 3;

    *(L2.pt) = 1;
    *(L2.pt+1) = 2;
    *(L2.pt+2) = 3;
    // 按位置查询
    int num = getElement01(L1,2);
    num && printf("num=%d\n",num);
    // 按位置查询-动态分配的顺序表
    int element = getElement02(L2,2);
    element && printf("element=%d\n",element);

    // 按值查询
    int place = getElement01(L1,1);
    place && printf("place=%d\n",place);
    return 0;
}

解析

  1. 顺序表按位查找
    在这里插入图片描述

在这里插入图片描述
2. 顺序表按值查找
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值