济南大学信息科学与工程学院数据结构课件 第二章.ppt

济南大学信息科学与工程学院数据结构课件 第二章.ppt

  1. 1、本文档共125页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
int Length() const {return last+1;} //计算表长度 bool getData(int i, Tx) const; //取第i个表项 { if(i0 i=last +1) {x=data[i-1]; return true;} else return false;} void setData(int i,T x) //用x修改第i个表项的值 { if(i0 i=last +1) data[i-1]=x;} 42.(13分)设将n(n,1)个整数存放到一维数组R中,试设计一个在时间和空间两方面尽可能有效的算法,将R中保有的序列循环左移P(0﹤P﹤n)个位置,即将R中的数据由(X0 X1 ……Xn-1)变换为(Xp Xp+1 ……Xn-1? X0? X1 ……Xp-1)要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C++ 语言表述算法,关键之处给出注释。 (3)说明你所设计算法的时间复杂度和空间复杂度(2010统考) 作业: 2.3.1 单链表 线性链表:用一组任意的存储单元存储线性表的数据元素(链式结构), 这种以链式结构存储的线性表称之为线性链表。 特点: 该线性表中的数据元素可以用任意的存储单元来存储。线性表中逻辑相邻的两元素的存储空间可以是不相邻的。 为表示逻辑上的顺序关系,对表的每个数据元素,除存储本身的信息之外,还需存储一个指示其直接后继的信息。这两部分信息组成数据元素的存储映象,称为结点。 (赵,钱,孙,李,周,吴,郑,王) 的链式表示 其它算法的实现 作业:1、2.10(5)将顺序表改为带头结点的单链表。 2、第二章 自测题 3、编写算法,实现顺序表的就地逆置 1:链表的逆置问题。 2:链表的合并问题(注意空间和时间的要求) 3:结构的选择问题。 4:链表的起始条件,判断条件,特点等 1、下述哪一条是顺序存储结构的优点?( ) A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示 2.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。 A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表 3.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。 A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表 4.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。 A. 单链表 B.单循环链表 C. 带尾指针的单循环链表 D.带头结点的双循环链表。(可用排除法) 双向循环链表的插入算法 template class T bool DblListT::Insert ( int i, const Tx, int d ) { DblNodeT *current = Locate(i, d); //定位第i个结点 if ( current == NULL ) return false; //插入失败 DblNodeT *newNode = new DblNodeT(x); if (d == 0) //前驱方向:插在第i个结点左侧 { newNode-lLink = current-lLink; //链入lLink链 current-lLink = newNode; newNode-lLink-rLink = newNode; newNode-rLink = current; } else //后继方向:插在第i个结点右侧 {……} //插入成功 } 双向循环链表的插入算法 template class T bool DblListT::Insert ( int i, const Tx, int d ) { DblNodeT *current = Locate(i, d); //定位第i个结点 if ( current == NULL ) return false; //插入失败 DblNodeT *newNode = new DblNodeT(x); if (d == 0) //前驱方向:插在第i个结点左侧 { ……. } else

文档评论(0)

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

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

1亿VIP精品文档

相关文档