顺序映像的C语言描述,线性表定义 顺序表示与实现.ppt

线性表定义 顺序表示与实现

第1章 绪论第2章 线性表第3章 栈和队列 第4章 串第6章 树和二叉树 第7章 图第9章 查找第10章 排序;数据结构课程的起点:; 线性结构的基本特征:;第2章 线性表;(a1, a2, … ai-1,ai, ai+1 ,…, an); ( A, B, C, D, …… , Z);“同一数据逻辑结构中的所有数据元素都具有相同的特性”是指数据元素所包含的数据项的个数都相等。;抽象数据类型线性表的定义如下:; InitList( &L ); GetElem( L, i, &e ) //读取 LocateElem(L,e,compare()) //查找;例1:假设:有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即:线性表中的数据元素即为集合中的成员。 现要求一个新的集合A=A∪B。; GetElem(Lb, i, e); // 取Lb中第i个数据元素赋给e if (!LocateElem(La, e, equal( )) ) ListInsert(La, ++La_len, e); // La中不存在和 e 相同的数据元素,则插入之;集合 B;void union(List &La, List Lb) { La_len=ListLength(La); Lb_len=ListLength(Lb);

} // union;若线性表中的数据元素相互之间可以比较,并且数据元素在线性表中依值非递减或非递增有序排列,即 ai≥ai-1 或 ai≤ai-1(i = 2,3,…, n),则称该线性表为有序表(Ordered List)。;则 ;1.初始化 LC 为空表;;2.2 线性表的顺序表示和实现;2.2.1 顺序表的表示; 地址求解公式:若已知表中首元素在存储器中的位 置,则其他元素存放位置亦可求出(利用数组V[n]的下标)。;a1;设有一维数组M,下标的范围是0到9,每个数组元素用相邻的5个字节存储。存储器按字节编址,设存储数组元素M[0]的第一个字节的地址是98,则M[3]的第一个字节的地址是多少?;顺序映像的 C 语言描述;sizeof(x)算符的意思是:计算变量x的长度(字节数);在线性表的第i个位置前插入一个元素;; Status ListInsert_Sq(SqList &L, int i, ElemType e) { // 在顺序表L的第 i 个元素之前插入新的元素e, // i 的合法范围为 1≤i≤L.length+1

} // ListInsert_Sq ;if (L.length >= L.listsize) { // 当前存储空间已满,增加分配 newbase = (ElemType *)realloc(L.elem, (L.listsize+LISTINCREMENT)*sizeof (ElemType)); if (!newbase) exit(OVERFLOW); // 存储分配失败 L.elem = newbase; // 新基址 L.listsize += LISTINCREMENT; // 增加存储容量};删除线性表的第i个位置上的元素;算法见教材 P24;Status ListDelete_Sq (SqList &L, int i, ElemType &e) {

} // ListDelete_Sq;2.2.3 顺序表的运算效率分析;插入时的平均移动次数为;链式存储结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值