c语言如何求顺序表长度,数据结构(C语言)-顺序表的操作.doc

数据结构(C语言)-顺序表的操作

数据结构(C语言)-顺序表的操作#include #include

#define TRUE1#define FALSE0#define OK1#defineERROR0#define INFEASIBLE-1#defineOVERFLOW-2

typedef int ElemType;typedef int Status;

// 线性表顺序存储结构#define LIST_INIT_SIZE100#define LISTINCREMENT10typedef struct{ElemType *elem;int length; int listsize; }SqList;

Status InitList_Sq(SqList &L){// 构造一个空的线性表L。L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));if (! L.elem)exit(OVERFLOW);// 存储分配失败L.length = 0;// 空表长度为0L.listsize = LIST_INIT_SIZE;// 初始存储容量return OK;} // InitList_Sq

Status DestroyList_Sq(SqList &L){// 销毁线性表 L。if (L.elem){L.length = 0;L.listsize = 0;free(L.elem);}return OK;} // DestroyList_Sq

Status ListEmpty_Sq(SqList L){// 判断线性表是否为空。if (L.length == 0)return TRUE;elsereturn ERROR;} // ListEmpty_Sq

Status ClearList_Sq(SqList &L){// 清空线性表 L。if (! ListEmpty(L)){for (int i = 0; i < L.length; i++)L.elem[i] = 0;L.length = 0;}return OK;} // ClearList_Sq

Status ListLength_Sq(SqList L){// 返回线性表的长度。return L.length;} // ListLength_Sq

Status GetElem_Sq(SqList L, int i, ElemType &e){// 用 e 返回线性表的第 i 个元素。if (i <= 0 || i > L.length)return ERROR;else{e = L.elem[i - 1];return OK;}} // GetElem_Sq

Status LocateElem_Sq(SqList L, ElemType e, Status (*compare)(ElemType, ElemType)){// 在顺序线性表 L 中查找第 1 个值与 e 满足 compare() 的元素的位序。// 若找到,则返回其在 L 中的位序,否则返回 0int i = 1;ElemType *p = L.elem;while (i <= L.length && !(*compare)(*p++, e))++i;if (i <= L.length)return i;else return 0;} // LocateElem_Sq

Status PriorElem_Sq(SqList L, ElemType cur_e, ElemType &pre_e){// 查找直接前驱for (int i = 1; i < L.length; i++)if (L.elem[i] == cur_e){pre_e = L.elem[i-1];return OK;}return FALSE;} // PriorElem_Sq

Status NextElem_Sq(SqList L, ElemType cur_e, ElemType &next_e){// 查找直接后继for (int i = 0; i < L.length; i++)if (L.elem [i] == cur_e){next_e = L.elem [i+1];return OK;}r

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值