- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实际问题:学生学籍管理 学生的自然情况: 包括学号、姓名、性别、出生日期、政治面貌和家庭住址等数据项。。 功能要求 ⑴ 插入:将某学生的基本信息插入到登记表中; ⑵ 删除:将满足条件的基本信息删除; ⑶ 修改:对基本信息的数据项进行修改; ⑷ 查询:查找满足条件的学生; ⑸ 输出:将登记表中的全部(或满足条件)基本信息输出。 考虑: 第二章 线性表 本章的基本内容是: 线性表的基本概念(逻辑结构) 线性表的顺序存储及实现 线性表的链式存储及实现 顺序表和单链表的比较 2.1 线性表的基本概念 2.1 线性表的基本概念 非空线性表的特性 有且仅有一个表头结点a1,它没有前驱,而仅有一个后继a2; (2)有且仅有一个表尾结点an,它没有后继,而仅有一个前驱an-1; (3)其余的结点ai(2≤i≤n?1)都有且仅有一个前驱a i-1和一个后继a i+1。 2.2 线性表的存储结构 2.2.1 顺序存储结构 2.2.1 顺序存储结构 2.2.1 顺序存储结构 2.2.1 顺序存储结构 2.2.1 顺序存储结构 2.2.1 顺序存储结构 存储结构和存取结构 存储结构是数据及其逻辑结构在计算机中的表示; 存取结构是在一个数据结构上对查找操作的时间性能的一种描述。 “顺序表是一种随机存取的存储结构”的含义为:在顺序表这种存储结构上进行的查找操作,其时间性能为O(1)。 2.2.2 顺序表操作算法 template class T, int MaxSize //类模板 class SeqList { T data[MaxSize]; //用于存放数据元素的数组 int length; //顺序表中元素的个数 public: SeqList( ); //无参构造函数 SeqList(T a[], int n); //有参构造函数 int ListLength(); //求线性表的长度 T Get(int pos); //按位查找,取顺序表的第pos个元素 int Locate(T item); //按值查找,求顺序表中值为item的元素序号 void PrintSeqList(); //遍历顺序表,按序号依次输出各元素 void Insert(int i, T item); //在顺序表第i个位置插入值为item的元素 T Delete(int i); //删除顺序表的第i个元素 }; 初始化操作——无参构造函数 操作接口:SeqList( ) 初始化操作——有参构造函数 操作接口:SeqList(T a[ ], int n) 初始化操作——有参构造函数 操作接口:SeqList(T a[ ], int n) 插入操作 操作接口: void Insert(int i, T item) 例:(35,12,24,42),在i=2的位置上插入33。 2.2.2 顺序表操作算法 插入操作算法描述 ① 检查顺序表的存储空间是否已到最大值(被占满),若是,则停止插入,并给出“上溢”出错提示;否则,执行第②步。 ② 检查插入位置i是否合法,若不合法,则停止插入,并给出“插入位置非法”出错提示;否则,执行第③步。 ③ 从最后一个元素向前直至第i个元素(下标为i?1)为止,将每一个元素均后移一个存储单元,将第i个元素的存储位置空出。 ④ 将新元素item写入到第i个元素处,即下标为i?1的位置。 ⑤ 将顺序表长度加1。 插入操作 算法描述: 2.2.2 顺序表操作算法 最好情况( i=n+1): 基本语句执行0次,时间复杂度为O(1)。 最坏情况( i=1): 基本语句执行n+1次,时间复杂度为O(n)。 平均情况(1≤i≤n+1): 时间复杂度为O(n)。 操作接口: T Delete(int i) 删除前:(a1, …, ai-1,ai,ai+1,…,an) 删除后:(a1,…,ai-1,ai+1, …,an) 例:(35, 33, 12, 24, 42),删除i=2的数据元素。 删除操作 算法描述: 顺序表的优缺点 顺序表的优点: ⑴ 无需为表示表中元素之间的逻辑关系而增加额外的存储空间; ⑵ 随机存取:可以快速地存取表中任一位置的元素。 顺序表的缺点: ⑴ 插入和删除操作需要移动大量元素; ⑵ 表的容量难以确定,表的容量难以扩充; ⑶ 造成存储空间的碎片。 2.3 线性表的链接存储结构及实现(单链表) 2.3.1 单链表的存储结构 例
文档评论(0)