单链表类型定义如下:
typedefstructnode{
DataTypedata;
structnode*next;
}ListNode;
typedefListNode*LinkList;
阅读下列算法,并回答问题:
voidf30(LinklListhead,DataTypex)
{//head是带头结点的非空单链表的头指针
ListNode*P,*q;
p=head;
while(P一>next一>next)
p=p一>next;
q=(ListNode*)malloc(sizeof(ListNode));
q一>data=x;
q一>next=p一>next;
p一>next=q;
}
(1)该算法的功能是什么?
(2)若单链表的长度为n,算法的时间复杂度是多少?该时间复杂度和链表的初始状态
有关吗?
(1)在单链表的表尾处插入结点χ (2)算法的时间复杂度为O(n),该时间复杂度与链表的初始状态无关 解析:根据算法可知其为在单链表的表尾处插入结点x的算法,其时间复杂度为O(n),该时间复杂度与链表的初始状态无关。