- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 2线性表A概要1
要点回顾 数据结构课程——涉及数学、计算机硬件和计算机软件 数据结构定义——指互相有关联的数据元素的集合,用D_S=( D, S ) 或 S=( D, R) 表示。 数据结构内容——数据的逻辑结构、存储结构和运算 算法效率指标——时间效率和空间效率 数据结构课程的内容 近3周上课内容 第2章 线性表 第3章 栈和队列 第4章 串 第5章 数组和广义表 线性结构的特点: ① 只有一个首结点和尾结点; ② 除首尾结点外,其他结点只有一个直接前驱和一个直接后继。 第2章 线性表 2.1 线性表的逻辑结构 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 应用举例 2.1 线性表的逻辑结构 例1 分析26 个英文字母组成的英文表 ( A, B, C, D, …… , Z) 2.2 线性表的顺序表示和实现 2.2.1 顺序表的表示 用一组地址连续的存储单元依次存储线性表的元素,可通过数组V[n]来实现。 线性表的顺序存储结构示意图 线性表顺序存储特点: 1. 逻辑上相邻的数据元素,其物理上也相邻; 2. 数据元素存放位置的计算方法: 设首元素a1的存放地址为LOC(a1)(称为首地址), 设每个元素占用存储空间(地址长度)为L字节, 则表中任一数据元素的存放地址为: LOC(ai) = LOC(a1) + L *(i-1) LOC(ai+1) = LOC(ai)+L 例1 一个一维数组M,下标的范围是0到9,每个数组元素用相邻的5个字节存储。存储器按字节编址,设存储数组元素M[0]的第一个字节的地址是98,则M[3]的第一个字节的地址是 补充:结构类型的C语言表示法 ④ 介绍三个有用的库函数(都在stdlib.h 中): sizeof(x)——计算变量x的长度; malloc(m) —开辟m字节长度的地址空间,并返回这段空间的首地址; free(p) ——释放指针p所指变量的存储空间,即彻底删除一个变量。 Kenneth Lane Thompson (born February 4, 1943), an American pioneer of computer science. notable for his work with the B programming language, C programming language and as one of the creators and early developers of the Unix and Plan 9 operating systems. Other notable contributions included his work on regular expressions and QED and ed, his work on computer chess that included creation of endgame tablebases and the chess machine Belle, and most recently the co-creation of Googles programming language Go. 线性表顺序存储: C语言实现线性表的顺序存储 1 #define TRUE 1 2 #define OK 1 3 #define ERROR 0 4 #define OVERFLOW -2 5 typedef int Status; … 6 #define LIST_INIT_SIZE 100 7 typedef struct { 8 ElemType *elem; 9 int length; 10 int listsize; 11}SqList; 2.2.2 顺序表的实现(或操作) 算法2.4 插入 //P24在线性表的第i个位置前插入一个元素e Status ListInsert_Sq(SqList L, int i, ElemType e){ 1 表L当前第i个元素到最后一个元素顺序后移,即“腾地”; 2 L.elem[i-1] = e; //位置i前插入 3 ++L.length; //表长增1 4 return OK; } 异常处理 位置i不在范围之内 当前存储空间已满,需要增加分配 算法2.5 删除 //P24删除线性表上第i个位置上的元素 Status ListDelete_Sq(SqList L, int i, ElemType e){ 1 表L当前第i个元素到最后一个元素依次前移,即“前移”; 2 ?; //表长减1 3 return
文档评论(0)