今天开始数据结构的学习。
一.顺序表的定义
#define InitSize 10 //默认的最大长度
typedef struct{
int *data; //指示动态分配数组的指针
int MaxSize; //顺序表的最大容量
int length; //顺序表的当前长度
}SeqList;
void InitList(SeqList &L){
L.data=(int *)malloc(InitSize*sizeof(int));//用malloc 函数申请一片连续的存储空间
L.length=0;
L.MaxSize=InitSize;
}
void IncreaseSize(SeqList &L,int len){//增加动态数组的长度
int *p=L.data;
L.data=(int *)malloc((L.MaxSize+len)*sizeof(int));
for(int i=0;i<L.length;i++){
L.data[i]=p[i]; //将数据复制到新区域
}
L.MaxSize=L.MaxSize+len;//顺序表的长度增加 len
free(p); //释放原来的内存空间
}
int main(){
SeqList L; //声明一个顺序表
InitList(L); //初始化顺序表
IncreaseSize(L,5); //往顺序表中插入5个元素
return 0;
}
二.顺序表的插入
#define MaxSize 10 //定义最大长度
typedef struct{
int data[MaxSize];//用静态的数组存放数据元素
int length;
}SqList;
void ListInsert(SqList &L,int i,int e){ //基本操作:在L的位序i处插入元素e
for(int j=L.length;j>=i;j--){
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
}
int main(){
SqList L;//声明一个顺序表
InitList(L);//初始化顺序表
ListInsert(L,3,3);
return 0;
}
三.顺序表的查找
3.1按位查找
#define InitSize 10
typedef struct{
ElemType *data; //指示动态分配数组的指针
int MaxSize;//顺序表的最大容量
int length;//顺序表当前长度
}SeqList;
ElemType GetElem(SeqList L,int i){
return L.data[i-1];
}
3.2 按值查找
typedef struct{
ElemType *data; //指示动态分配数组的指针
int MaxSize;//顺序表的最大容量
int length;//顺序表当前长度
}SeqList;
int LocateElem(SeqList L,int e){
for(int i=0;i<L.length;i++){
if(L.data[i]==e)
return i+1;
}
}