顺序存储结构线性表基本操作纯C语言实现.doc

上传人:scccc 文档编号:13258755 上传时间:2021-12-20 格式:DOC 页数:8 大小:97.50KB
返回 下载 相关 举报
顺序存储结构线性表基本操作纯C语言实现.doc_第1页
第1页 / 共8页
顺序存储结构线性表基本操作纯C语言实现.doc_第2页
第2页 / 共8页
顺序存储结构线性表基本操作纯C语言实现.doc_第3页
第3页 / 共8页
顺序存储结构线性表基本操作纯C语言实现.doc_第4页
第4页 / 共8页
顺序存储结构线性表基本操作纯C语言实现.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《顺序存储结构线性表基本操作纯C语言实现.doc》由会员分享,可在线阅读,更多相关《顺序存储结构线性表基本操作纯C语言实现.doc(8页珍藏版)》请在三一文库上搜索。

1、/ 顺序存储结构线性表基本操作 纯 C 语言实现/a simple example of Sq_List by C language/by wangweinoo1PG/#include <stdio.h>#include <stdlib.h>/ 以下为函数运行结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define LIST_INIT_SIZE 5#define LISTINCREMENT 1/ 线性表存储空间

2、的初始分配量/ 线性表存储空间分配增量typedefintStatus ;/ 函数类型,其值为为函数结果状态代码typedefintElemTypeJ/ 假设数据元素为整型typedef structElemType*elemJ/存储空间基址intlength; /当前长度intlistsize ;/当前分配的存储容量Sqlist ;/ 实现线性表的顺序存储结构的类型定义staticSqlist L; / 为了引用方便,定义为全局变量staticElemType element ;/ 函数名: InitList()/ 参数: SqList L/ 初始条件:无/ 功能:构造一个空线性表/ 返回值

3、:存储分配失败: OVERFLOW/ 存储分配成功: OK/Status InitList ( Sqlist L)( ElemType );L.elem= ( ElemType* ) malloc ( LIST_INIT_SIZE* sizeof if ( L.elem=NULL )exit ( OVERFLOW);elseL.length= 0;L.listsize=LISTINCREMENT ;return OK;/ 函数名: DestroyList()/ 参数: SqList L/ 初始条件:线性表 L 已存在/ 功能:销毁线性表/ 返回值: L.elem=NULL:ERROR/ L.e

4、lem!=NULL:OK/Status DestroyList ( Sqlist L) if ( L.elem=NULL )return ERROR;elsefree ( L.elem );return OK;/ 函数名: ClearList()/ 参数: SqList L/ 初始条件:线性表 L 已存在/ 功能:清空线性表/ 返回值: L.elem=NULL:ERROR/ L.elem!=NULL:OK/Status ClearList ( Sqlist L)if ( L.elem=NULL ) exit ( ERROR);int i ;ElemType *p_elem=L.elemfor(

5、 i= 0; i<L.length; i+ )*L.elem=NULL ;L.elem+ ;L.elem=p_elem ; return OK;/ 函数名: ListEmpty()/ 参数: SqList L/ 初始条件:线性表 L 已存在/ 功能:判断线性表是否为空/ 返回值:空: TRUE/ 非空: FALSE/Status ListEmpty ( Sqlist L) int i ;ElemType *p_elem=L.elemfor ( i= 0; i<L.length ; i+ ) if ( *L.elem!= 0)L.elem=p_elem ; return FALSE

6、;L.elem+ ;return TRUE;/ 函数名: ListLength()/ 参数: SqList L/ 初始条件:线性表 L 已存在/ 功能:返回线性表长度/ 返回值:线性表长度 (L.length)/ int ListLength ( Sqlist L) return L.length ;/ 函数名: GetElem()/ 参数: SqList L,int i,ElemType *element/ 初始条件:线性表 L 已存在, 1<=i<=ListLength(L)/ 功能:用 e 返回线性表中第 i 个元素的值/ 返回值: (i<1)|(i>ListLe

7、ngth(L) : OVERFLOW/ 1<=i<=ListLength(L) : OK /Status GetElem ( Sqlist L, int i )int j ;ElemType *p_elem=L.elem ;if ( i< 1| i>L.length )return OVERFLOW;for ( j= 1; j<=i ; j+ )L.elem+ ;element=*L.elem ;L.elem=p_elem ;return OK;/ 函数名: LocateElem()/ 参数: Sqlist L,ElemType element/ 初始条件:线性表

8、 L 已存在/ 功能:返回顺序表 L 中第 1 个与 element 相等的元素/ 返回值:若在 L 中存在于 element 相等的元素:其位序 / 若在 L 中不存在与 element 相等的元素: 0 /int LocationElem ( Sqlist L,ElemType element ) int i ;ElemType *p_elem=L.elem ;for ( i= 1; i<L.length ; i+ )if ( *L.elem=element )L.elem=p_elem ; return i ; elseL.elem+ return 0;/ / 函数名: Prior

9、Elem()存在/ 参数: Sqlist L,ElemType cur_e,ElemType *pre_e/ 初始条件:线性表 L 已存在, i>1&&i<=L.length, LocationElem()/ 功能:用 pre_e 返回线性表中 cur_e 的前驱/ 返回值: i<=1|i>L.length : OVERFLOW/ i>1&&i<=L.length: OK/Status PriorElem ( SqlistL,ElemType cur_e,ElemType*pre_ElemType *p_elem=L.elem

10、 int i,j i=LocationElem ( L,cur_e ); if ( i<= 1| i>L.length ) exit ( OVERFLOW);for ( j= 1; j<i ; j+ )if ( j= ( i- 1)pre_e=L.elem ; L.elem=p_elem ; return OK;elseL.elem+/ / 函数名: NextElem()存在/ 参数: Sqlist L,ElemType cur_e,ElemType *next_e/ 初始条件:线性表 L 已存在, i>=1&&i<L.length , Locat

11、ionElem()/ 功能:用 next_e 返回线性表中 cur_e 的后继/ 返回值: i<1|i>=L.length: OVERFLOW/ i>=1&&i<L.length : OK/*next_eStatus NextElem ( SqlistL,ElemType cur_e,ElemTypeElemType *p_elem ;int i,j ;i=LocationElem ( L,cur_e ); if ( i< 1| i>=L.length ) exit ( OVERFLOW);for ( j= 1; j<i ; j+ )i

12、f ( j= ( i- 1)next_e=L.elem ; L.elem=p_elem ; return OK;elseL.elem+ ;/ 函数名: ListInsert()/ 参数: SqList L,int i,ElemType e/ 初始条件:线性表 L 已存在, 1<=i<=ListLength(L)+1/ 功能:在线性表中第 i 个数据元素之前插入数据元素 e/ 返回值:失败: ERROR/ 成功: OK /Status ListInsert ( Sqlist L, int i,ElemType e)int *q=& ( L.elemi- 1);ElemType

13、 *newbase,* p;if ( i< 1| i> ( L.length+ 1)return ERROR;if ( L.length>=L.listsize )newbase= ( ElemType* ) realloc ( L.elem,L.listsize+LISTINCREMENT * sizeof ( ElemType );if ( newbase=NULL )exit ( OVERFLOW);L.elem=newbase ;L.listsize+=LISTINCREMENT ;for (p =&( L.elemL.length- 1); p>=q

14、; - p)*(p +1) =* p;*q=e ; +L.length return OK;/ 函数名: ListDelete()/ 参数: SqList L,int i,Elemtype e/ 初始条件:线性表 L 已存在, 1<=i<=ListLength(L)/ 功能:将线性表 L 中第 i 个数据元素删除/ 返回值:失败: ERROR/ 成功: OK/Status ListDelet ( Sqlist L, int i,ElemType e) if ( i< 1|( i>L.length )return ERROR; ElemType * p,*q ;p =&( L.elemi- 1);e=* p; q=L.elem+L.length- 1;for ( +p;p <=q ; +p)*(p - 1) =* p;-L.length;return OK;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1