线性表
相同类型+有限+序列
表长、空表、位序、表头表尾元素、直接前驱后继
初始化
InitList
销毁
DestroyList
插入
ListInsert
删除
ListDelete
按值查找
LocationElem
按位查找
GetElem
表长
Length
输出
Print
判空
Empty
自己定义操作
⭐为什么要实现数据结构基本操作?
1、团队合作编程,定义数据结构让别人能够很方便的使用(封装)
2、将常用的操作/运算封装成函数,避免重复工作,降低出错风险
顺序表
1、顺序表――用顺序存储的方式实现线性表顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
2.1、静态数组分配
#define MaxSize 10 //定义最大长度
typedef struct{
ElemType data [MaxSize]; //用静态的“数组”存放数据元素
int length; //顺序表的当前长度
}SqList; //顺序表的类型定义(静态分配方式
#include<stdio.h>
#define MaxSize 10 //定义静态数组的最大长度
typedef struct {
int data[MaxSize];
int length;
}SqList;
void InitList(SqList &L){
L.length = 0; //顺序表的初始长度为0
}
int main(){
SqList L;
InitList(L);
for(int i=0;i<MaxSize;i++){
printf("data[%d] = %d\n",i,L.data[i];
return 0;
}
静态分配的局限性:
1、数组满了也不能够重新改变数组长度或者加新的值。
2、申请的空间太多造成资源浪费。
2.2、动态分配
#define InitSize 10 //顺序表的初始长度
typedef struct{
ElemType *data; //指示动态数组分配的指针
int MaxSize; //顺序表的最大容量
int length