如何将单链表逆序输出La和Lb合成Lc后,逆置Lc 求程序

数据结构实验二(单链表基本操作)题目和源程序-博泰典藏网
典藏文档 篇篇精品
数据结构实验二(单链表基本操作)题目和源程序
导读:实验2:单链表基本操作,一、实验目的,实现对单链表的一些基本操作和具体的函数定义,2.掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现,二、实验要求,1.预习C语言中结构体的定义与基本操作方法,2.对单链表的每个基本操作用单独的函数实现,3.编写完整程序完成下面的实验内容并上机运行,4.整理并上交实验报告,三、实验内容,1.编写程序完成单链表的下列基本操作:,编写程序实现将La、Lb实验2:单链表基本操作一、 实验目的1. 学会定义单链表的结点类型,实现对单链表的一些基本操作和具体的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。2. 掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。二 、实验要求1.预习C语言中结构体的定义与基本操作方法。2.对单链表的每个基本操作用单独的函数实现。3.编写完整程序完成下面的实验内容并上机运行。4.整理并上交实验报告。三、实验内容1.编写程序完成单链表的下列基本操作:(1)初始化单链表La。(2)在La中第i个元素之前插入一个新结点。(3)删除La中的第i个元素结点。(4)在La中查找某结点并返回其位置。(5)打印输出La中的结点元素值。2 .构造两个带有表头结点的有序单链表La、Lb,编写程序实现将La、Lb合并成一个有序单链表Lc。合并思想是:程序需要3个指针:pa、pb、pc,其中pa,pb分别指向La表与Lb表中当前待比较插入的结点,pc 指向Lc表中当前最后一个结点。依次扫描La和Lb中的元素,比较当前元素的值,将较小者链接到*pc之后,如此重复直到La或Lb结束为止,再将另一个链表余下的内容链接到pc所指的结点之后。3.构造一个单链表L,其头结点指针为head,编写程序实现将L逆置。(即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。)四、思考与提高1.如果上面实验内容2中合并的表内不允许有重复的数据该如何操作?2.如何将一个带头结点的单链表La分解成两个同样结构的单链表Lb,Lc,使得Lb中只含La表中奇数结点,Lc中含有La表的偶数结点? /*----------------------------------------*
02_单链表.cpp -- 单链表基本操作*
对单链表的每个基本操作都用单独的函数来实现*
2009年写----------------------------------------*/ // ds02.cpp : 定义控制台应用程序的入口点。// #include &stdafx.h&#include&iostream&#include&iomanip&#include&ctime&
typedef int ElemTtypedef struct LNode{ElemTstruct LNode *}LNode, *LinkL //确保输入的数据正确int Oncemore(){cout && &输入错误,请重新输入:& ;cin &&cout &&if( n &= 2 )n = Oncemore( ) ;} //初始化单链表Lvoid InitList(LinkList &L){L = (LinkList)malloc(sizeof(LNode));L-&next = NULL;} //逆位序创建一个带头结点的单链线性表LinkList CreateList( LinkList &L, int n ){LinkLfor( int i = 0; i & i++ ){p = (LinkList)malloc(sizeof(LNode)) ;p-&data = (int)(rand()%100) ;
//给新生成的结点随机赋一个值p-&next = L-& L-&next =
//插入到表头}return L;} //在L中第i个元素之前插入一个新结点void Insert(LinkList &L, int i){LNode *p;LNode *p1;p1 = L-&p = (LinkList)malloc(sizeof(LNode)) ;p-&data = (int)(rand()%100) ;
//给新生成的结点随机赋一个值for(m = 2; m & m++)p1 = p1-&if(m == i){p-&next = p1-&p1-&next =cout && &在L中第i个元素之前插入一个新结点成功.&;}else cout && &在L中第i个元素之前插入一个新结点失败.&;} //删除La中的第i个元素结点void Delete(LinkList &L, int j){LNode *p;LNode *p1;p1 = L-&for(m = 1; m & m++){p1 = p1-&if(m == (j-2))p = p1;
//p指向欲删除结点的前一个结点}if(m == j){p-&next = p1-&
下一个结点delete p1;cout && &删除L中的第j个元素结点成功.&;
}else cout && &删除La中的第j个元素结点失败.&; } //在L中查找某结点并返回其值int Lookup(LinkList &L, int k){LNode *p;p = L-&for(i = 1; i & i++)p = p-&if(i == k){cout && &在L中查找第i个结点并返回其值成功.&;
return p-&}else{cout && &在L中查找i个结点并返回其值失败.&;
return 0;}} /*LinkList mix(LinkList &L){LinkList p1,p2,p3;p1 = L-&p2 = L-&p3 = L-&while(p1-&next != NULL){if(p1-&data & p1-&next-&data)p2 = p1-&p1 = p1-&} //p结点指向欲删除结点的if(p3-&next = NULL){L-&next = NULL;return p1;}else{p3 = L-&while(p3-&next != p2 && !p3-&next)p3 = p3-&p3-&next = p2-&p2-&next = NULL ;return p2;}} void Union(LinkList &La,LinkList &Lb,LinkList &Lc) {LinkList pa,pb,pc = Lc;while(La-&next != NULL && Lb-&next != NULL)
{pa = mix(La);pb = mix(Lb);if(pa-&data & pb-&data){pc-&next =pc =}else{pc-&next =pc =}}if(La-&next != NULL)pc-&next = La-&if(Lb-&next != NULL)pc-&next = Lb-&}*/ //使线性表按值非递减排列void Notdegression( LinkList &L, int n ){LinkLwhile(n){pa = L-&while( pa-&next )
{if( pa-&data & pa-&next-&data )
{m = pa-&pa-&data = pa-&next-&
pa-&next-&data =pa = pa-&
}else{pa = pa-&}}n-- ;}} //归并La和Lb,得到元素也按非递减排列的Lcvoid Merger( LinkList &La, LinkList &Lb, LinkList &Lc ) {Lc = (LinkList)malloc(sizeof(LNode));LinkList pa, pb,pa = La-&pb = Lb-&Lc-&next = NULL ;
pc = Lwhile(pa && pb)
个结点{if(pa-&data & pb-&data)
{pc-&next =pc =pa = pa-&}else{
//当pa不为最后一个结点 //交换两个结点的值
//移向下一个结点
//移向下一个结点 //初始化
//当pa或pb没有到最后一//pa结点插入到Lc表的末端
//pb结点插入到Lc表的末包含总结汇报、表格模板、行业论文、旅游景点、初中教育、教学研究以及数据结构实验二(单链表基本操作)题目和源程序等内容。本文共2页
相关内容搜索数据结构与算法(C++)--单链表_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
数据结构与算法(C++)--单链表
数​据​结​构​与​算​法​ ​,​C​+​+​版​ ​ ​单​链​表
大小:328.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢数据结构实验二(单链表基本操作)题目和源程序10
上亿文档资料,等你来发现
数据结构实验二(单链表基本操作)题目和源程序10
实验2:单链表基本操作;一、实验目的;1.学会定义单链表的结点类型,实现对单链表的一些;2.掌握单链表基本操作及两个有序表归并、单链表逆;二、实验要求;1.预习C语言中结构体的定义与基本操作方法;2.对单链表的每个基本操作用单独的函数实现;3.编写完整程序完成下面的实验内容并上机运行;4.整理并上交实验报告;三、实验内容;1.编写程序完成单链表的下列基本操作
实验2:单链表基本操作一、 实验目的1. 学会定义单链表的结点类型,实现对单链表的一些基本操作和具体的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。2. 掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。二 、实验要求1.预习C语言中结构体的定义与基本操作方法。2.对单链表的每个基本操作用单独的函数实现。3.编写完整程序完成下面的实验内容并上机运行。4.整理并上交实验报告。三、实验内容1.编写程序完成单链表的下列基本操作:(1)初始化单链表La。(2)在La中第i个元素之前插入一个新结点。(3)删除La中的第i个元素结点。(4)在La中查找某结点并返回其位置。(5)打印输出La中的结点元素值。2 .构造两个带有表头结点的有序单链表La、Lb,编写程序实现将La、Lb合并成一个有序单链表Lc。合并思想是:程序需要3个指针:pa、pb、pc,其中pa,pb分别指向La表与Lb表中当前待比较插入的结点,pc 指向Lc表中当前最后一个结点。依次扫描La和Lb中的元素,比较当前元素的值,将较小者链接到*pc之后,如此重复直到La或Lb结束为止,再将另一个链表余下的内容链接到pc所指的结点之后。3.构造一个单链表L,其头结点指针为head,编写程序实现将L逆置。(即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。)四、思考与提高1.如果上面实验内容2中合并的表内不允许有重复的数据该如何操作?2.如何将一个带头结点的单链表La分解成两个同样结构的单链表Lb,Lc,使得Lb中只含La表中奇数结点,Lc中含有La表的偶数结点? /*----------------------------------------*
02_单链表.cpp -- 单链表基本操作*
对单链表的每个基本操作都用单独的函数来实现*
2009年写----------------------------------------*/ // ds02.cpp : 定义控制台应用程序的入口点。// #include &stdafx.h&#include&iostream&#include&iomanip&#include&ctime&
typedef int ElemTtypedef struct LNode{ElemTstruct LNode *}LNode, *LinkL //确保输入的数据正确int Oncemore(){cout && &输入错误,请重新输入:& ;cin &&cout &&if( n &= 2 )n = Oncemore( ) ;} //初始化单链表Lvoid InitList(LinkList &L){L = (LinkList)malloc(sizeof(LNode));L-&next = NULL;} //逆位序创建一个带头结点的单链线性表LinkList CreateList( LinkList &L, int n ){LinkLfor( int i = 0; i & i++ ){p = (LinkList)malloc(sizeof(LNode)) ;p-&data = (int)(rand()%100) ;
//给新生成的结点随机赋一个值p-&next = L-& L-&next =
//插入到表头}return L;} //在L中第i个元素之前插入一个新结点void Insert(LinkList &L, int i){LNode *p;LNode *p1;p1 = L-&p = (LinkList)malloc(sizeof(LNode)) ;p-&data = (int)(rand()%100) ;
//给新生成的结点随机赋一个值for(m = 2; m & m++)p1 = p1-&if(m == i){p-&next = p1-&p1-&next =cout && &在L中第i个元素之前插入一个新结点成功.&;}else cout && &在L中第i个元素之前插入一个新结点失败.&;} //删除La中的第i个元素结点void Delete(LinkList &L, int j){LNode *p;LNode *p1;p1 = L-&for(m = 1; m & m++){p1 = p1-&if(m == (j-2))p = p1;
//p指向欲删除结点的前一个结点}if(m == j){p-&next = p1-&
下一个结点delete p1;cout && &删除L中的第j个元素结点成功.&;
}else cout && &删除La中的第j个元素结点失败.&; } //在L中查找某结点并返回其值int Lookup(LinkList &L, int k){LNode *p;p = L-&for(i = 1; i & i++)p = p-&if(i == k){cout && &在L中查找第i个结点并返回其值成功.&;
return p-&}else{cout && &在L中查找i个结点并返回其值失败.&;
return 0;}} /*LinkList mix(LinkList &L){LinkList p1,p2,p3;p1 = L-&p2 = L-&p3 = L-&while(p1-&next != NULL){if(p1-&data & p1-&next-&data)p2 = p1-&p1 = p1-&} //p结点指向欲删除结点的if(p3-&next = NULL){L-&next = NULL;return p1;}else{p3 = L-&while(p3-&next != p2 && !p3-&next)
p3 = p3-&p3-&next = p2-&p2-&next = NULL ;return p2;}} void Union(LinkList &La,LinkList &Lb,LinkList &Lc) {LinkList pa,pb,pc = Lc;while(La-&next != NULL && Lb-&next != NULL)
{pa = mix(La);pb = mix(Lb);if(pa-&data & pb-&data){pc-&next =pc =}else{pc-&next =pc =}}if(La-&next != NULL)pc-&next = La-&if(Lb-&next != NULL)pc-&next = Lb-&}*/ //使线性表按值非递减排列void Notdegression( LinkList &L, int n ){包含各类专业文献、行业资料、专业论文、高等教育、文学作品欣赏、中学教育、幼儿教育、小学教育、数据结构实验二(单链表基本操作)题目和源程序10等内容。 
 三、实验内容 1.编写程序完成单链表的下列基本操作: (1)初始化单链表 La。 (2)在 La 中第 i 个元素之前插入一个新结点。 (3)删除 La 中的第 i 个...  请到百度文库投诉中心;如要提出功能问题或意见建议,...数据机构实验二 指导教师:张老师 实验二 单链表操作...熟悉 C 语言程序的基本结构, 掌握程序中的用户头...  数据结构 实验二 单链表的基本操作_计算机软件及应用_IT/计算机_专业资料。课内...五、实验结果 测试数据及测试结果,包括输入输出。 六、源程序清单 源程序中要求...  如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 加入阅读会员!获取下载券
数据结构 实验二:单链表的基本操作 数据结构 ...  如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处...三, 实验内容 程序 1:线性单链表基本操作的实现(以带头结点的单链表为例) ...  如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 加入阅读会员!获取下载券
数据结构实验二(单链表的基本操作) 数据结构数...  如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处...实验项目摘要 编写一个程序 algo2-2.cpp.实现单链表的各种基本运算,并在此...  实验2 链表基本操作实验目的 1. 2. 3. 4. 定义单链表的结点类型。 熟悉对...该程序包括单链表结构类型 以 及对单链表操作的具体的函数定义和主函数。程序中...  理解循环链表和双链表的特点和基本运算 2、实验内容...1. 问题描述: 利用线性表的链式存储结构,设计一组...作为整个程序的执行入口处,定义测试的数据,完成各种...数据结构(C语言版)第一二章习题答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数据结构(C语言版)第一二章习题答案
数​据​结​构​(​C​语​言​版​)​第​一​二​章​习​题​答​案​,​人​民​邮​电​出​版​社​出​版​,​答​案​很​详​细​.​.​.​.​.​.​.
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
你可能喜欢实验2-链表_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
实验2-链表
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢}

我要回帖

更多关于 单链表逆置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信