跟我学数据结构--线性表的顺序存储
来源:互联网 发布:java [count] 编辑:程序博客网 时间:2024/05/17 23:28
顺序存储定义
//如果分配成功则建立一个线性表
i
2 销毁线性表
3 清空线性表
5获取线性表的容量
4 将元素插入线性表
将元素从线性表中删除
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
线性表的一些常用操作
1 创建线性表
2 销毁线性表
3 清空线性表
4 将元素插入线性表
5 将元素从线性表中删除
6 获取线性表中某个位置的元素
7 获取线性表的长度
用如下一个柔性数组来实现顺序存储结构
typedef struct tag_seqlist{ int capicity; //最大容量 int length; //目前该线性表的长度 Tseqlistnod* node; //线性表存储数据} Tseqlist;
1 创建线性表
SeqList* SeqList_Create(int capacity){Tseqlist* ret = NULL;if (capacity >= 0){ret = (Tseqlist*) malloc(sizeof(Tseqlist) + sizeof(Tseqlistnod) * capacity); //为柔性数组分配内存空间}
//如果分配成功则建立一个线性表
i
f (ret != NULL){ret->capicity = capacity ;ret->length = 0;ret->node = (Tseqlistnod*)(ret + 1);}return ret;}
2 销毁线性表
销毁线性表需要释放分配的内存
void SeqList_Destroy(SeqList* list){free(list) ;list = NULL ;}
3 清空线性表
//在这里,只是把线性表的实际长度变为了0,但是没有对已经存储的数据进行清除
void SeqList_Clear(SeqList* list){ //创建一个新的线性表指针指向要清除的线性表的第一个元素Tseqlist* slist = (Tseqlist*) list;if (slist != NULL){slist->length = 0;}}
4获取线性表的长度
int SeqList_Length(SeqList* list){Tseqlist* slist = (Tseqlist*) list;int ret = -1;if (slist != NULL){ret = slist->length;}return ret;}
5获取线性表的容量
int SeqList_Capacity(SeqList* list){Tseqlist* slist = (Tseqlist*) list;int ret = -1;if (slist != NULL){ret = slist->capicity;}return ret;}
4 将元素插入线性表
插入元素算法
1 判断线性表是否合法
2 判断插入位置是否合法
3 把最后一个元素到插入位置的元素后移一个位置
4 将新元素插入
5 线性表长度加1
int SeqList_Insert(SeqList* list, SeqListNode* node, int pos){Tseqlist* slist = (Tseqlist*) list;int ret = -1;int i = 0; //判断线性表是否合法ret = (slist != NULL) && (slist->capicity >= slist->length + 1) && (pos >= 0); if (ret) { //判断插入位置是否合法if (pos >= slist->length){pos = slist->length;}for ( i = slist->length; i > pos; i--){slist->node[i] = slist->node[i-1];}slist->node[i] = (Tseqlistnod) node;slist->length++; }return ret;}
6.获取线性表中某个位置的元素
SeqListNode* SeqList_Get(SeqList* list, int pos){Tseqlist* slist = (Tseqlist*) list;SeqListNode* ret = NULL;if ((slist != NULL) && (pos >= 0)){if (slist->length >= pos){ret = (SeqListNode*) slist->node[pos];}}return ret;}
将元素从线性表中删除
删除元素算法 1 判断线性表是否合法 2 判断删除位置是否合法 3 将元素取出 4 将删除位置后的元素分别向前移动一个位置 5 线性表长度减1SeqListNode* SeqList_Delete(SeqList* list, int pos){Tseqlist* slist = (Tseqlist*) list;SeqListNode* ret = SeqList_Get(list, pos);int i = 0; if (slist != NULL) { for (i = pos+1; i < slist->length; i++) { slist->node[i-1] = slist->node[i]; } slist->length--; }return ret;}
源代码下载地址http://download.csdn.net/detail/hongkangwl/6353339
- 跟我学数据结构--线性表的顺序存储
- 跟我学数据结构-- 线性表的链式存储结构
- 跟我学数据结构之线性表
- 【数据结构】线性表的顺序存储结构
- 数据结构之线性表的顺序存储
- 数据结构 线性表的顺序存储
- 数据结构:线性表的顺序存储
- 【数据结构】线性表的顺序存储结构
- 数据结构-线性表的顺序存储
- 小菜一步一步学数据结构之(三)线性表的顺序存储结构
- 数据结构--线性表顺序存储
- 数据结构---线性表---顺序存储
- 数据结构一 线性表的顺序存储结构
- 大话数据结构一:线性表的顺序存储结构
- 数据结构实验一 线性表的顺序存储实验
- 数据结构:线性表的顺序存储--Java实现
- 数据结构笔记之线性表的顺序存储结构
- 数据结构之线性表的顺序存储结构
- 在命令行下进行Oracle用户解锁
- Java 泛型
- 鼠鼠百科——专家系统
- Understanding Memcached Source Code
- MySQL数据加密
- 跟我学数据结构--线性表的顺序存储
- cocos2dx编译错误:无法从“void (__thiscall xx::* )(void)”转换为“cocos2d::SEL_CallFuncN”
- AM12.1 License 安装问题
- objective-c与Lua的交互(一)
- Java运算符优先级整理
- objective-c与Lua的交互(二)
- Oracle DB 概要文件
- 多态之向上转型
- redo和undo事务提交和回滚