第三章用户接口与作业管理习题(编辑修改稿)内容摘要:
5 从左到右及从右到左遍历一个单链表是可能的,其方法是在从左向右遍历的过程中将连接方向逆转,如右图所示。 在图中的指针 p 指向当前正在访问的结点,指针 pr 指向指针 p 所指结点的左侧的结点。 此时,指针 p 所指结点左侧的所有结点的链接方向都已逆转。 (1) 编写一个算法,从任一给定的位置 (pr, p)开始,将指针 p 右移 k 个结点。 如果 p 移出链表,则将 p 置为 0,并让 pr 停留在链表最右边的结点上。 (2) 编写一个算法,从任一给定的位置 (pr, p)开始,将指针 p 左移 k 个结点。 如果 p 移出链表,则将 p 置为 0,并让 pr 停留在链表最左边的结点上。 第 3 章 链表 16 【解答】 (1) 指针 p 右移 k 个结点 templateclass Type void ListType :: siftToRight ( ListNodeType *amp。 p, ListNodeType *amp。 pr, int k ) { if ( p == NULL amp。 amp。 pr != first ) { //已经在链的最右端 cout 已经在链的最右端,不能再右移。 endl。 return。 } int i。 ListNodeType *q。 if ( p == NULL ) //从链头开始 { i = 1。 pr = NULL。 p = first。 } //重置 p 到链头也算一次右移 else i = 0。 while ( p != NULL amp。 amp。 i k ) { //右移 k 个结点 q = plink。 plink = pr。 //链指针 p→ link 逆转指向 pr pr = p。 p = q。 i++。 //指针 pr, p 右移 } cout 右移了 i 个结点。 endl。 } (2) 指针 p 左移 k 个结点 templateclass Type void ListType :: siftToLeft ( ListNodeType *amp。 p, ListNodeType *amp。 pr, int k ) { if ( p == NULL amp。 amp。 pr == first ) { //已经在链的最左端 cout 已经在链的最左端,不能再左移。 endl。 return。 } int i = 0。 ListNodeType *q。 while ( pr != NULL amp。 amp。 i k ) { //左移 k 个结点 q = prlink。 prlink = p。 //链指针 prlink 逆转指向 p p = pr。 pr = q。 i++。 //指针 pr, p 左移 } cout 左移了 i 个结点。 endl。 if ( i k ) { pr = p。 p = NULL。 } //指针 p 移出表外,重置 p, pr } 36 试写出用单链表表示的字符串类及字符串结点类的定义,并依次实现它的构造函数、以及计算串长度、串赋值、判断两串相等、求子串、两串连接、求子串在串中位置等 7 个成员函数。 要求每个字符串结点中只存放一个字符。 【解答】 //用单链表表示的字符串类 string1 的头文件 include const int maxLen = 300。 //字符串最大长度为 300(理论上可以无限长) class string1 { public: string1 ( )。 //构造空字符串 第 3 章 链表 17 string1 ( char * obstr )。 //从字符数组建立字符串 ~string1 ( )。 //析构函数 int Length ( ) const { return curLen。 } //求字符串长度 string1amp。 operator = ( string1amp。 ob )。 //串赋值 int operator == ( string1amp。 ob )。 //判两串相等 charamp。 operator [ ] ( int i )。 //取串中字符 string1amp。 operator ( ) ( int pos, int len )。 //取子串 string1amp。 operator += ( string1amp。 ob )。 //串连接 int Find ( string1amp。 ob )。 //求子串在串中位置 (模式匹配 ) friend ostreamamp。 operator ( ostreamamp。 os, string1amp。 ob )。 friend istreamamp。 operator ( istreamamp。 is, string1amp。 ob )。 private: ListNodechar*chList。 //用单链表存储的字符串 int curLen。 //当前字符串长度 } //单链表表示的字符串类 string1 成员函数的实现,在文件 中 include include string1 :: string1( ) { //构造函数 chList = new ListNodechar ( 39。 \039。 )。 curLen = 0。 } string1 :: string1( char *obstr ) { //复制构造函数 curLen = 0。 ListNodechar *p = chList = new ListNodechar ( *obstr )。 while ( *obstr != 39。 \039。 ) { obstr++。 p = plink = new ListNodechar ( *obstr )。 curLen++。 } } string1amp。 string1 :: operator = ( string1amp。 ob ) { //串赋值 ListNodechar *p =。 ListNodechar *q = chList = new ListNodechar ( pdata )。 curLen =。 while ( pdata != 39。 \039。 ) { p = plink。 q = qlink = new ListNodechar ( pdata )。 } return *this。 } 第 3 章 链表 18 int string1 :: operator == ( string1amp。 ob ) { //判两串相等 if ( curLen != ) return 0。 ListNode char *p = chList, *q =。 for ( int i = 0。 i curLen。 i++ ) if ( pdata != qdata ) return 0。 else { p = plink。 q = qlink。 } return 1。 } charamp。 string1 :: operator [ ] ( int i ) { //取串中字符 if ( i = 0 amp。 amp。 i curLen ) { ListNode char *p = chList。 int k = 0。 while ( p != NULL amp。 amp。 k i ) { p = plink。 k++。 } if ( p != NULL ) return pdata。 } return 39。 \039。 } string1amp。 string1 :: operator ( ) ( int pos, int len ) { //取子串 string1 temp。 if ( pos = 0 amp。 amp。 len = 0 amp。 amp。 pos curLen amp。 amp。 pos + len 1 curLen ) { ListNodechar *q, *p = chList。 for ( int k = 0。 k pos。 k++。 ) p = plink。 //定位于第 pos 结点 q = = new ListNodechar ( pdata )。 for ( int i = 1。 i len。 i++ ) { //取长度为 len 的子串 p = plink。 q = qlink = new ListNodechar ( pdata )。 } qlink = new ListNodechar ( 39。 \039。 )。 //建立串结束符 = len。 } else { = 0。 = new ListNodechar ( 39。 \039。 )。 } return *temp。 } string1amp。 string1 :: operator += ( string1amp。 ob ) { //串连接 if ( curLen + maxLen ) len = maxLen curLen。 else len =。 //传送字符数。第三章用户接口与作业管理习题(编辑修改稿)
相关推荐
基础的现代远程教育网络。 教育部已郑重提出,教育必须迎接挑战,而且必须迎接来自互联网的网络教育的挑战。 中国将加快国家教育信息化的步伐,并根据各地区经济发展不平衡的现实,分三个层次推进信息化教育。 这三个层次是:一是以计算机多媒体为核心的教育技术在学校的普及与运用;二是组织学校上网,利用网上资源;三是开办远程教育,提供广泛的学习资源,不断满足社会终身教育的需求
甚至寻找性刺激,做出不利自己身心健康的行为。 最后,他大概是跳海自杀了,他的结局也只能如此。 当他临死前喊出: 祖国呀祖国。 你快富起来吧。 就显得太无力了。 至于雨 我的死 是你害我的。 也不完全对,因为他自己也要负相当的责任。 《沉伦》中的主人公,确是 五四 时期一个类型的知识分子形象。 他和当时许多知识分子一样,要求个性解放,要求民族复兴和社会进步。 同时,又具有小资产阶级知识分子的弱点。
级 /; 5. 近代上海的地方公债 /财经论丛 /二级 /; 6. 近代上海华商证券市场中的经纪人公会 /《史丛》(韩国高丽大学主办) /二级/。 获奖情况(厅局级三等奖以上 ) 1. 浙江省高校优秀成果奖 /浙江省教育厅 /一等奖 /2020/第一; 2. “浙江省纪念中国人民抗日战争胜利 60周年学术研讨会”征文活动 /浙江省委宣传部、浙江省委党史研究室、浙江省社 联联合颁发(厅局级)
洗内饰 .全车油漆送免费全车抛光一次 . 市区全天候 365天免费抢修,免费拖车,并承诺 4560 分到达。 市外拖车仅收成本费 .设急修热线电话 :057185376385。 本厂为政府公务车提供 3辆标志明显的抢修车,其中一辆为平板式拖车。 对公务用车实行电脑网络化管理,为每一辆车建立完整的客户档案,包括每次维修的车况,以便为每辆车随时受到快捷、安全、可靠、周到的服务。
国的爱国统一战线是由中国共产党领导的,有各民主党派和各人民团体参加,其中包括有( ) A、拥护社会主义的爱国者 B、所有拥护中国共产党主张的人 C、全体社会主义劳动者 D、拥护祖国统一的爱国者 E、所有工人、农民和知识分子 中国共产党根据( )的方针,与各民主党派形成了较为完善的协商与合作制度。 A、长期共存 B、互相监督 C、肝胆相照 D、荣辱与共 E、与时俱进 人民代表大会制
1.随着现代科学技术的发展,人类的生产领域已经扩大到太空中,出现了“太空制药厂”、“宇宙冶金厂”、“奇妙的宇宙声音工厂”等。 ( 1)太空间垃圾是如何产生的。 ( 2)科学家为何大声疾呼“保持太空清洁”。 ( 3)想一想,清除空间垃圾有哪些办法。 ( 4)类的生产领域扩大到太空 需要那些条件。 ( 5)人类的生产领域由地球转移到太空,将对地球有那些贡献。 2.某城市是我国重要的钢铁、化工基地