[新大纲] 3 线性表 - Copy.pptx

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二部分 数据结构主讲教师:王永波ybwang@cumt.edu.cn中国矿业大学环境与测绘学院提纲概述线性表栈与队树与二叉树图查找排序二、线性表顺序存储存储地址存储内容L0元素1head元素2L0+mL0+(i-1)*m元素iL0+(n-1)*m元素n^Loc(元素i)=L0+(i-1)*m1、线性表的逻辑结构元素1元素2元素32、定义定义n( ? 0)个数据元素的有限序列存储结构顺序表(向量),链表特点除第一个元素外,其他每一个元素有一个且仅有一个直接前驱。除最后一个元素外,其他每一个元素有一个且仅有一个直接后继。3、线性表的运算基本运算插入:在两个确定元素之间插入一个新元素删除:删除线性表中某个元素查找:按某种要求查找线性表中一个元素排序:按给定要求对表中元素重新排序4、顺序存储线性表顺序存储结构/向量式存储结构将线性表中的元素相继存放在 一个连续的存储空间中。可利用一维数组描述存储结构 设:已知线性表中每个元素占l个单元,线性表内存首地址为:adr(a1)=b,则线性表中第i个元素的存储地址为 adr(ai)=adr(a1)+(i-1)l4.1 顺序表类的定义template class Type class CSeqList { //顺序表存储数组 Type *data; //最大允许长度 int MaxSize; //当前最后元素下标 int last; public: CSeqList ( int MaxSize = defaultSize ); ~CSeqList ( ) { delete [ ] data; } int Length ( ) const { return last+1; } // 查找 int Find ( Type x ) const; int Locate ( int i ) const;//定位 int Insert (int i, Type x); //插入 int Remove (int i); //删除 int Next ( Type x ) ; //后继 int Prior ( Type x ) ;//前驱 int IsEmpty ( ) { return last ==-1; } int IsFull ( ) { return last == MaxSize-1; } Type Get ( int i ) {//提取return i 0 || i last?NULL : data[i]; }} 4.1 顺序表(SeqList)类的定义class CSeqList { //顺序表存储数组 int *data; //最大允许长度 int MaxSize; //当前最后元素下标 int last; public: CSeqList ( int MaxSize = defaultSize ); ~CSeqList ( ) { delete [ ] data; } int Length ( ) const { return last+1; } // 查找 int Find (int x ) const; int Locate (int i ) const;//定位 int Insert (int i, int x); //插入 int Remove (int i); //删除 int Next (int x ) ; //后继 int Prior (int x ) ;//前驱 int IsEmpty ( ) { return last ==-1; } int IsFull ( ) { return last == MaxSize-1; } int Get ( int i ) {//提取return i 0 || i last?NULL : data[i]; }} 4.2 顺序存储结构的插入、删除xana1a2…ai-1ai…插入线性表的插入是指在第i(1?i ? n+1)个元素之前插入一个新的数据元素x,使长度为n的线性表变成长度为n+1的线性表操作:将第i至第n共(n-i+1)个元素后移4.2.1 顺序表的插入算法Insert(int i, int x) { // 在i位置插入x int k; if(last==MAXLENGTH) { printf(“线性表已满!\n”); exit(-1); } if (i1 || ilast+1) { printf(“插入位置错误!\n” ); exit(-2); } else { for (k = last-1; k = i; k--) list[k+1] = list[k]; list[i] = x; ++last; }}Step1:将第n至第i

您可能关注的文档

文档评论(0)

6952225 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档