湛江网站排名,计算机网络技术电商网站建设与运营方向,wordpress变装小说,seo外包团队文章目录 一、线性表1、线性表1.1、线性表的定义1.2、线性表的操作 2、顺序表2.1、顺序表的实现--静态分配2.2、顺序表的实现--动态分配2.2、顺序表的特点 3、顺序表的基本操作3.1、插入操作3.2、删除操作3.3、查找操作3.2、按位查找3.2、按值查找 一、线性表
1、线性表
1.1、… 文章目录 一、线性表1、线性表1.1、线性表的定义1.2、线性表的操作 2、顺序表2.1、顺序表的实现--静态分配2.2、顺序表的实现--动态分配2.2、顺序表的特点 3、顺序表的基本操作3.1、插入操作3.2、删除操作3.3、查找操作3.2、按位查找3.2、按值查找 一、线性表
1、线性表
1.1、线性表的定义 1.2、线性表的操作 2、顺序表 2.1、顺序表的实现–静态分配
静态的数组分配后固定不变 Sq:sequence–顺序序列
#includestdio.h
#define MaxSize 10typedef struct{int data[MaxSize];int length;
}SqList;void InitList(SqList L){for(int i0;iMaxSize;i){L.data[i]0;}L.length0;
}
int main(){SqList L;InitList(L);for(int i0;iMaxSize;i)printf(data%d\n,L.data[i]);return 0;
} 2.2、顺序表的实现–动态分配 #includestdlib.h
#define InitSize 10//结构体
typedef struct{int *data;int MaxSize;int length;
}SeqList;//初始化顺序表
void InitList(SeqList L){L.data(int *)malloc(InitSize*sizeof(int));L.MaxSizeInitSize;L.length0;
}
//增加长度操作
void IncreaseSize(SeqList L,int len){int *pL.data;L.data(int *)malloc((InitSizelen)*sizeof(int));//将以前的数据复制到新区域for(int i0;iL.length;i){L.data[i]p[i];} L.MaxSizeL.MaxSizelen;//销毁无效区域 free(p);
}int main(){SeqList L;InitList(L);IncreaseSize(L,5);return 0;
}2.2、顺序表的特点 3、顺序表的基本操作
3.1、插入操作 #includestdlib.h
#includestdio.h
#define InitSize 10
#define MaxSize 10
typedef struct{int *data;int length;
}SqList;//初始化顺序表
void InitList(SqList L){L.data(int *)malloc(sizeof(int)*InitSize);L.length0;
} //顺序表插入
bool ListInsert(SqList L,int i,int e){//为了代码的健壮性判断i的范围是否有效if(i1||iL.length1)return false;//判断存储空间是否已满 if(L.lengthMaxSize)return false; //i及其i之后数据向后移动一位for(int jL.length;ji;j--){L.data[j]L.data[j-1];} //赋值L.data[i-1]e; //长度1L.lengthL.length1; return true;
}
int main(){SqList L;InitList(L);//给顺序表赋值for(int i0;i5;i){L.data[i]i1;L.length;} ListInsert(L,3,3);for(int i0;i5;i){printf(%d\n,L.data[i]);} return 0;
}插入操作的时间复杂度
3.2、删除操作 #includestdlib.h
#includestdio.h
#define InitSize 10
#define MaxSize 10
typedef struct{int *data;int length;
}SqList;//初始化顺序表
void InitList(SqList L){L.data(int *)malloc(sizeof(int)*InitSize);L.length0;
} //顺序表插入
bool ListInsert(SqList L,int i,int e){//为了代码的健壮性判断i的范围是否有效if(i1||iL.length1)return false;//判断存储空间是否已满 if(L.lengthMaxSize)return false; //i及其i之后数据向后移动一位for(int jL.length;ji;j--){L.data[j]L.data[j-1];} //赋值L.data[i-1]e; //长度1L.length; return true;
}
//顺序表删除
bool ListDelete(SqList L,int i,int e){//判断合法性if(i1||iL.length1)return false;eL.data[i-1];for(int ji;jL.length;j){L.data[j-1]L.data[j];}L.length--;return true;
}
int main(){int e-1;SqList L;InitList(L);//给顺序表赋值for(int i0;i5;i){L.data[i]i1;L.length;} ListInsert(L,3,3);ListDelete(L,5,e);for(int i0;iL.length;i){printf(%d\n,L.data[i]);} printf(delete data %d,e);return 0;
}删除操作的时间复杂度
3.3、查找操作
3.2、按位查找 按位查找的时间复杂度
3.2、按值查找 #includestdlib.h
#includestdio.h
#define InitSize 10typedef struct{int *data;int MaxSize;int length;
}SeqList;//初始化顺序表
void InitList(SeqList L){L.data(int *)malloc(sizeof(int)*InitSize);L.length0;L.MaxSizeInitSize;
}
//按值查找
int LocateElem(SeqList L,int e){for(int i0;iL.length;i){if(L.data[i]e)return i1;}return 0;
}
int main(){SeqList L;InitList(L);//给顺序表赋值for(int i0;i5;i){L.data[i]i1;L.length;} int numberLocateElem(L,3);printf(%d,number);return 0;
}结构类型比较 时间复杂度