目录
- 线性表的重要基本操作
- 1、初始化
- 初始化线性表L(参数用引用)
- 初始化线性表L(参数用指针)
- 销毁、清空线性表L
- 求线性表L的长度、判断线性表L是否为空
- 2、取值
- 获取线性表L中的某个数据元素的内容
- 3、查找
- 在线性表L中查找值为e的数据元素
- 4、插入
- 插在第 i 个结点之前
- 算法步骤
- 算法描述
- 算法时间复杂度分析
- 5、删除
- 删除第 i 个结点
- 算法步骤
- 算法描述
- 算法分析
- 顺序表的时间、空间复杂度分析
- 顺序表(顺序存储结构)的特点
- 顺序表的优缺点
- 顺序表的代码实现(C++)
- 初始化、插入
- 结果
- 删除
- 结果
线性表的重要基本操作
1、初始化
初始化线性表L(参数用引用)
初始化线性表L(参数用指针)
销毁、清空线性表L
求线性表L的长度、判断线性表L是否为空
2、取值
获取线性表L中的某个数据元素的内容
3、查找
在线性表L中查找值为e的数据元素
4、插入
插在第 i 个结点之前
算法步骤
算法描述
算法时间复杂度分析
5、删除
删除第 i 个结点
算法步骤
算法描述
算法分析
顺序表的时间、空间复杂度分析
顺序表(顺序存储结构)的特点
顺序表的优缺点
顺序表的代码实现(C++)
初始化、插入
#include<stdio.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100 //最大长度
typedef int Status;
typedef int ElemType;
typedef struct {
ElemType *elem; //指向数据元素的基地址
int length; //线性表的当前长度
}SqList;
//初始化
Status InitList_Sq(SqList &L){ //构造一个空的顺序表L
L.elem=new ElemType[MAXSIZE]; //为顺序表分配空间
if(!L.elem) return(OVERFLOW); //存储分配失败
L.length=0; //空表长度为0
return OK;
}
//插入
Status ListInsert_Sq(SqList &L,int i ,ElemType e){
int j;
if(i<1 || i>L.length+1) return ERROR; //i值不合法
if(L.length==MAXSIZE) return ERROR; //当前存储空间已满
for(j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移
L.elem[i-1]=e; //将新元素e放入第i个位置
++L.length; //表长增1
return OK;
}
//删除
/*
Status ListDelete_Sq(SqList &L,int i,ElemType &e){
int j;
if((i<1)||(i>L.length)) return ERROR; //i值不合法
if(L.length==0) return ERROR;
e=L.elem[i-1];
for (j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移
--L.length; //表长减1
return OK;
}
*/
void printList(SqList L){
int i;
for(i=0;i<L.length;i++)
printf("%d ",L.elem[i]);
printf("\n");
}
void main(){
int i;
SqList List;
ElemType m;
//初始化
InitList_Sq(List);
//插入
//ListInsert_Sq(List,1,1);
for(i=1;i<6;i++){
ListInsert_Sq(List,i,i);
}
printList(List);
/*
//删除
ListDelete_Sq(List,3,m);
printf("delete:%d\n",m);
printList(List);
*/
}
结果
删除
Status ListDelete_Sq(SqList &L,int i,ElemType &e){
int j;
if((i<1)||(i>L.length)) return ERROR; //i值不合法
if(L.length==0) return ERROR;
e=L.elem[i-1];
for (j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移
--L.length; //表长减1
return OK;
}
void main(){
int i;
SqList List;
ElemType m;
//初始化
InitList_Sq(List);
//插入
//ListInsert_Sq(List,1,1);
for(i=1;i<6;i++){
ListInsert_Sq(List,i,i);
}
printList(List);
//删除
ListDelete_Sq(List,3,m);
printf("delete:%d\n",m);
printList(List);
}