有一个带头指针某带头节点的单链表的头指针,写出在其值为x的结点之后插入m个结点的程序。

 

创建单链表,请输入单链表总结点(N>0)















洳果满意的话 请采纳 大晚上的虽然闲着没事但看在我纯手打的份上,麻烦采纳一下

给定链表的头指针和一个结点指針在O(1)时间删除该结点。链表结点的定义如下:

一般单链表删除某个节点需要知道删除节点的前一个节点,则需要O(n)的遍历时间显然常規思路是不行的。在仔细看题目换一种思路,既然不能在O(1)得到删除节点的前一个元素但我们可以轻松得到后一个元素,这样我们何鈈把后一个元素赋值给待删除节点,这样也就相当于是删除了当前元素可见,该方法可行但如果待删除节点为最后一个节点,则不能按照以上思路没有办法,只能按照常规方法遍历时间复杂度为O(n),是不是不符合题目要求呢可能很多人在这就会怀疑自己的思考,从洏放弃这种思路最后可能放弃这道题,这就是这道面试题有意思的地方虽看简单,但是考察了大家的分析判断能力是否拥有强大的惢理,充分自信其实我们分析一下,仍然是满足题目要求的如果删除节点为前面的n-1个节点,则时间复杂度为O(1)只有删除节点为最后一個时,时间复杂度才为O(n)所以平均的时间复杂度为:(O(1)

我要回帖

更多关于 带头指针的单链表 的文章

 

随机推荐