顺序存储表示的模板:
//-----顺序表的存储结构-----
#define MAXSIZE 100 //顺序表可能达到的最大长度
typedef struct //多项式非零项的定义
{
ElemType *elem; //存储空间的基地址
int length; //当前长度
}
基于此模板下设计的两个案列(多项式和图书表)
elem[0] | elem[1] | elem[2] | ... | elem[length-1] | 空闲区 |
a1 | a2 | a3(包含系数和指数) | ... | alength |
//多项式的顺序存储结构类型定义:
#define MAXSIZE 100 //多项式可能达到的最大长度
typedef struct
{
float coef; //系数
int expn; //指数
}Polynomical;
typedef struct
{
Polynomical *elem; //存储空间的基地址
int length; //多项式中当前项的个数
}Sqlist;
elem[0] | elem[1] | elem[2] | ... | elem[length-1] | 空闲区 |
a1 | a2 | a3 | ... | alength |
//图书表的顺序存储结构的类型定义:
#define MAXSIZE 10000 //图书表可能达到的最大长度
typedef struct //图书信息定义
{
char no[20]; //图书ISBN
char name[50]; //图书名字
float price; //图书价格
}Book;
typedef struct
{
Book *elem; //存储空间的基地址
int length; //图书表中当前图书的个数
}Sqlist; //图书表的顺序存储结构类型为Sqlist
在上述定义后,可以通过变量定义语句
SqList L;
将L定义为SqList类型的变量,便可以利用L.elem[i-1]访问表中位置序号为i的图书记录。
利用了数组的随机存取的性质,时间复杂度为O(1),因为与问题的规模n无关,给我一个下标便去检索对应位置下的元素。