有两个长度为n的单链表,结点类型相同,一个链表是非循环,一个是循环,删除第一个结点时间复杂度都是o(1)

哪里错了???
2024-12-16 00:15:34
推荐回答(5个)
回答1:

这个时间复杂度得看你的程序是怎么写的了。对于非循环的链表来说,如果指针指向的是头结点,O(1)是对的。但如果是循环链表的话,指针的指向就将决定你的算法的时间复杂度,应该假设指针指向所有的结点,求出平均时间复杂度来作为结果。

回答2:

循环单链表删除第一个节点后,要修改尾节点的->next啊,在循环单链表里要找到尾节点需要遍历整个链表,时间复杂度就是O(n)了

回答3:

getsize函数中和show函数中,head->right=head->right->right;这句使链表断了。问题就出在这。你可以仔细看一下。根本上是你的遍历链表算法错了。
在main函数中,将a.show()注释掉就可以看到计算结果了,你可以试一下。

回答4:

两个循环链表 合成 一个循环链表,时间复杂度为O(1),
两个单链表合成一个的时间复杂度为O(n)

回答5:

不对吧 对循环链表而言 没有所谓的第一个结点吧