数据结构实验四在线等价类排序输出

   日期:2024-12-29    作者:gzzhuangdian3688 移动:http://3jjewl.riyuangf.com/mobile/quote/79663.html
  1. 使用模拟指针实现本实验。
  2. 输入一个1-9的正整数n,代表要创建n个元素,例如输入5,则代表创建一个1,2,3,4,5组成的元素表。
  3. 再输入一个大于0正整数r,代表后面要输入r个等价关系。
  4. 分行输入r个等价关系,格式如(1,2)。
  5. 分行输出所有等价类,一个等价类的元素由小到大依次输出。例如等价类(1,3,5,2,4),输出时排序输出(1,2,3,4,5)。
  6. 如果输出不是由小到大顺序输出,解决办法很多,可以创建一个n*n的数组,一行存放一个等价类,将所有等价类放入数组,对数组每一行元素进行排序,输出数组所有元素。
 

这是一段在csdn上cv的代码,关于我在抄袭的过程中学到了什么

简单捋一下思路:创造n个的链表,其中包含三个元素,等价类的标识符,链表长度,指针next,首先将n个元素分别放置在相应的等价类中,接下来读入输入的数对,进行等价类的合并。假如输入的数字是(x,y,首先要确定标识符的顺序,假定n1与n2是代表两个等价类的标识符,则用n1来表示较小的那一个,接下来的工作是将第二个等价类中的元素依次插入第一个等价类中,该过程中使用一个指针,假设为k,指向n2中第一个元素,n1中也将数组指针指向不大于n2中所指元素的数字,然后进行插入操作,插入过程中第二个链表会出现断连,此时需要用temp存储一下n2中元素的下一位,插入一个元素后,将指针k和数组指针均往后移动一位,移动插入过程中,若第一个链表的next为空,则将n1中第一个元素指向n2中此时所指的元素,若第二个链表的next为空,则使n2的元素的next指向n1中所指元素的next,即可实现等价类的排序合并。

while中条件的意思是如果n1后面还有元素,且n2中还有元素没有插入,则仍需要进行插入排序

if中条件的意思是如果n1中没有元素了,但是n2中还有元素,则直接将n2中元素接在n1后面即可。

设置标识符的意义就在于给出一个元素,就可以直接知道这个元素的等价类,且等价类的标识符使用的是最小元素的值,这样输出的时候就可以避免重复输出,只输出本元素在本等价类这样的等价类即可。

最后还需要提及的一个小点是读入输入的数对时需要提取数字,此时用到了string。

浅谈一下课本上对在线等价类输出的想法:用到了递归


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号