网友您好, 请在下方输入框内输入要搜索的题目:
题目内容
(请给出正确答案)
用带头节点单链表表示集合,假设该单链表中的元素递增有序,设计一个高效算法求两个集合的交集,并分析该算法的时间和空间复杂度。
参考答案和解析
链头
更多 “用带头节点单链表表示集合,假设该单链表中的元素递增有序,设计一个高效算法求两个集合的交集,并分析该算法的时间和空间复杂度。” 相关考题
考题
函数Node *difference(A,B)用于求两个集合之差C=A-B,即当且仅当e是A中的一个元素,但不是B中的元素时,e是C中的元素。集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之间按递增排列。执行C=A-B之后,表示集合A和B的链表不变,若结果集合C非空,则表示其链表根据元素之值按递增排列。函数append()用于在链表中添加节点。[C函数]typedef struct node{int element;struct node *link;}Node;Node *A,*B,*C;Node *append(last,e)Node *last;int e;{last->link=(Node *)malloc(sizeof(Node));last->link->element=e;return(last->link);}Node *difference(A,B)Node *A,*B;{ Node *c,*last;C=last=(Node *)malloc(sizeof(Node));while( (1) )if(A->element<B->element){last=append(last,A->element);A=A->link:}else if( (2) ){A:A->link;B:B->link;}elSe(3) ;while( (4) ){last=append(last,A->element);A=A->link:}(5) ;last=c;c=c->link;free(last);return(c);}
考题
● 单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是 (60) 。(60)A. 若在头结点中存入链表长度值,则求链表长度运算的时间复杂度为O(1)B. 在链表的任何一个元素前后进行插入和删除操作可用一致的方式进行处理C. 加入头结点后,代表链表的头指针不因为链表为空而改变D. 加入头结点后,在链表中进行查找运算的时间复杂度为O(1)
考题
设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。
考题
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B 的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
考题
在长度为n的()上删除第一个元素,其算法的时间复杂度为O(n)。
A.只有表头指针的不带表头结点的循环单链表B.只有表尾指针的不带表头结点的循环单链表C.只有表尾指针的带表头结点的循环单链表D.只有表头指针的带表头结点的循环单链表
考题
已知一个长度为n的单链表中的所有结点是有序(递增)的,以下叙述中正确的是()。
A.插入一个结点使之有序的算法的时间复杂度为O(1)B.删除最大值结点使之有序的算法的时间复杂度为O(1)C.找最小值结点的算法的时间复杂度为O(1)D.以上都不对
考题
在一个长度为n(n>1)的带头结点单链表h上,另设有尾指针r(指向尾结点)。与链表的长度有关的操作是()。A.删除单链表中的第一个元素
B.删除单链表中的最后一个元素
C.在单链表第一个元素前插入一个新元素
D.在单链表最后一个元素后插入一个新元素
考题
在长度为n(Il>1)的()上,删除第一个元素.其时间复杂度为O(n)。A.只有首结点指针的不带头结点的循环单链表
B.只有尾结点指针的不带头结点的循环单链表
C.只有尾结点指针的带头结点的循环单链表
D.只有头结点的循环单链表
考题
在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行()操作与链表的长度有关。A、删除单链表中的第一个元素B、删除单链表中的最后一个元素C、在单链表第一个元素前插入一个新元素D、在单链表最后一个元素后插入一个新元素
考题
问答题编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。
热门标签
最新试卷