对于双向链表,在两个结点之间插入一个新结点需修改的指针共__________个,单链表为__________个。【
对于双向循环链表,在P指针所指的结点之后插入s指针所指结点的操作应为()。
A.p->next=s;s->prior=p;p->next->prior=s;s->next=p->next;
B.p->next=s;p->next->prior=s;s->prior=p;s->next=p->next;
C.s->prior=p;s->next=p->next;p->next=s;p->next->prior=s;
D.s->prior=p;s->next=p->next;p->next->prior=s;p->next=s;
稀疏矩阵相加。两个稀疏矩阵A和B采用十字链表方式存储,计算C=A+B,C采用十字链表方式存储。
算法分析:根据矩阵相加的法则,C中的非零元素cij只可能有3种情况:aij+bij,aij(bij=0),bij(aij=0)。因此,当B加到A上时,对A的十字链表来说,或者是改变结点的val域值aij+bij≠0,或者不变(bij=0),或者插入一个新结点(aij=0),还可能是删除一个结点(aij+bij=0)。整个运算可从矩阵的第一行逐步进行。对每一行都从行表头出发分别找到A和B在该行中的第一个非零元素结点后开始比较,然后按以下4种不同情况分别处理(假设pa和pb分别指向A和B的十字链表中行值相同的两个结点)。
在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂性为______。
A.O(1)
B.O(n)
C.O(n2)
D.O(log2n)
A.无头结点的单向链表
B.带头结点的单向链表
C.带头结点的双循环链表
D.带头结点的单循环链表
二叉搜索树与双向链表
题目:输入一棵二叉搜索树,将该二叉树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中的结点指针的指向。比如输入图4.12中左边的二叉搜索树,则输出转换之后的排序双向链表。
二叉树结点的定义如下:
struct BinaryTreeNode
{
int m_ nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
A.p->next=f
B.p->next=f和f=p
C.f=p->next
D.f->next=p和f=p
在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点s,则执行()。
A.s->next=p->next;p->next=s
B.p->next=s->next;s->next=p
C.q->next=s;s->next=p
D.p->next=s;s->next=q
A.单链表的插入操作中,需要建立一个新数据结点
B.单链表的访问方式是顺序访问方式,即要从第一个结点开始依次访问其他结点
C.建立单链表时,有正向生成构造和反向生成构造两种方法
D.单链表删除操作中,仅需要将被删结点从链表上取下来既可