@【TOC】(目录)第一章:线性表
前言
数据结构作为计算机系的最重要课程是计算机系学生必修课,我们需要引起足够的重视。希望能够把自己的代码分享给有需要的同学们,一起进步。实现语言为C语言,发博客之前已检查了能否运行成功。 学习教材:数据结构(C语言版)-严蔚敏 吴伟民 代课教师:呼克佑(太原理工大学讲师) 作者简介: 中部某末流211软院大二学生
一、数据结构是什么?
数据结构是计算机存储、组织数据的方式
二、线性表的顺序存储方式的实现
1.实现所需的主要函数
int InitList(SqList *L);
int DestroyList(SqList *L);
int ListEmpty(SqList L);
int ListLength(SqList L);
int GetElem(SqList L, int i, int *e);
int ListInsert(SqList *L, int i, int e);
int ListDelete(SqList *L, int i, int *e);
int LocateElem(SqList L,int e);
void GetElems(SqList L);
2.常量定义
#define LIST_SIZE 10
#define OVERFLOW 1
#define OK 0
#define OVERFLOW -1
#define TRUE 1
#define FALSE 0
#define ERROR 0
3.定义结构体
typedef struct SqList{
int *data;
int length;
};
4.实现
4.1初始化,构建新的线性表
int InitList(struct SqList *L){
L->data = (int *) malloc(sizeof(int) * LIST_SIZE);
if(!L->data)
return ERROR;
L->length = 0;
return OK;
}
4.2销毁线性表
int DestroyList(struct SqList *L){
free(L->data);
L->length = 0;
L->data = NULL;
return OK;
}
4.3判断线性表是否为空
int ListEmpty(struct SqList L){
if(L.length < 1)
return TRUE;
else
return FALSE;
}
4.4获取线性表长度
int ListLength(struct SqList L){
return L.length;
}
4.5获取线性表中第i个元素,并将值返回给e
int GetElem(struct SqList L, int i,int *e){
if(i < 1 ||i > L.length )
return ERROR;
*e = L.data[i-1];
return OK;
}
4.6在线性表的第i个位置插入元素e
int ListInsert(struct SqList *L, int i, int e){
if(i < 1 || i > L->length + 1)
return ERROR;
for(int j = i-1; j <L->length-1;j++)
L->data[j+1] = L->data[j];
L->data[i-1] = e;
L->length++;
return OK;
}
4.7在线性表中删除第i个位置的元素
int ListDelete(struct SqList *L, int i,int *e){
if(i < 1 || i > L->length)
return ERROR;
*e = L->data[i-1];
for(int j = L->length-1; j > L->length-1; j--)
L->data[j-1] = L->data[j];
L->length--;
return OK;
}
4.8查找顺序表中与给定值e相等的元素,若成功则返回该元素在表中的位置,否则返回0
int LocateElem(struct SqList L,int e){
int i;
for(i = 0; i < L.length; i++)
if(L.data[i] == e)
return i+1;
return 0;
}
4.8获取线性表中的所有元素
void GetElems(SqList L){
for(int i = 1; i <= L.length; i++)
printf("线性表中第%d个元素是%d\n",i,L.data[i-1]);
}
总结
线性表的顺序存储结构优点:随机存取
缺点:不适用频繁的插入和删除,效率不高,时间复杂度O(n)
【小白】线性表的顺序存储结构的实现(C语言)
下一节:线性表的链式存储结构的实现
|