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;
}
解析
- 顺序表按位查找
2. 顺序表按值查找