数 据 结 构
数据元素和数据元素之间的关系
逻辑结构:
线性结构 表
树形结构 树
网状结构 图
存储结构:
顺序存储 顺序表 顺序栈 顺序队列
链式存储 链表 链式栈 链式队列
索引存储
散列存储
查找和排序
内存泄漏检测工具 valgrind
valgrind --tool=memcheck --leak-check=full 程序名(二进制文件名)
顺序表
1.概念
表:若干个元素的集合
1.表中的元素是有限个
2.表中的元素是相互之间存在关系的
3.表中的元素必须是相同类型
相同类型n(n >= 0,1,2,3)个元素的集合
2.操作
创建
销毁
添加
删除
查找
修改
查看保存数据个数
3.顺序表的结构
顺序表表头
typedef struct list
{
DATATYPE *head; //指向存储空间首地址的指针
int clen; //记录顺序表中存储元素的个数
int tlen; //记录数序表中能够存储对多元素的个数
}SeqList;
4.创建顺序表
SeqList *CreateSeqList(int len);
功能:
创建一个数序表
参数:
len:最大存放元素的个数
返回值:
成功返回创建顺序表空间的指针
SeqList *CreateSeqList(int len)
{
1.申请空间
2.对相应成员进行初始化
3.返回创建顺序表的指针
}
5.销毁
int DestroySeqList(SeqList *list);
功能:
销毁一个顺序表
参数:
list:要销毁顺序表的地址
返回值:
成功返回0
int DestroySeqList(SeqList *list)
{
1.销毁存储数据的区域
free(list->head);
2.销毁顺序表表头
free(list);
3.返回0
return 0;
}
6.判断顺序表是否存满
int IsFullSeqList(SeqList *list);
功能:
判断一个顺序表是否存满
参数:
list:要判断的顺序表的地址
返回值:
如果存满返回1
没有存满返回0
int IsFullSeqList(SeqList *list);
{
1.判断现在顺序表中存放的元素个数是否达到上限
if (list->clen == list->tlen)
2.如果存满返回1
return 1;
3.没有存满返回0
return 0;
}
7.增加
1.顺序插入
int InsertSeqList(SeqList *list,DATATYPE data);
{
1.判断顺序表中的元素是否存满
if (IsFullSeqList(list))
2.如果存满返回-1
return -1;
3.没有存满则将data存放在下一个元素空间中
*(list->head + list->clen) = data;
4.clen++
list->clen++;
5.成功返回0
return 0;
}
8.查看
int ShowSeqList(SeqList *list);
功能:
查看一个顺序表中存放的值
参数:
list:要查看的顺序表地址
返回值:
成功返回0
int ShowSeqList(SeqList *list)
{
1.循环从0-clen打印存储元素
2.成功返回0
}