注意:此页面搜索的是所有试题
国家开放大学数据结构复习题
在线性表的顺序结构中,以下说法正确的是( )。
A. 逻辑上相邻的元素在物理位置上不一定相邻
B. 数据元素是不能随机访问的
C. 进行数据元素的插入、删除效率较高
D. 逻辑上相邻的元素在物理位置上也相邻
对链表, 以下叙述中正确的是( )。
A. 不能随机访问任一结点
B. 插入删除元素的操作一定要要移动结点
C. 结点占用的存储空间是连续的
D. 可以通过下标对链表进行直接访问
设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为( )。
A. n-i+1 B. i
C. n-i-1 D. n-i
在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行_________。
A. HL=p;p->next=HL;
B. p->next=HL;HL=p;
C. p->next=HL;p=HL;
D. p->next=HL->next;HL->next=p;
在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则以下操作哪个是正确的( )。
A. s->next=p->next;p->next=s;
B. p->next=s->next;s->next=p;
C. p->next=s;s->next=q;
D. q->next=s;s->next=p;
在循环双链表的p所指结点之后插入s所指结点的操作是( )。
A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;
B. p->right=s;p->right->left=s;s->left=p;s->right=p->right;
C. s->left=p;s->right=p->right;p->right=s;p->right->left=s;
D. s->left=p;s->right=p->right;p->right->left=s;p->right=s;
若HL为一个不带表头结点的循环单链表的表头指针,若有HL->next= =HL条件存在,则该循环单链表是( )。
A.空表 B.只有1个元素;
C.空表或只有一个元素 D.非空表
若HL为一个带表头结点的单链表的表头指针,则该表为空表的条件是( )。
A.HL==NULL B.HL->next==NULL
C.HL->next==HL D.HL!=NULL
设头指针为head的非空的单向链表,指针p指向尾结点,则通过以下操作( )可使其成为单向循环链表。
选择一项:
A. head = p; B. p=head;
C. p->next = NULL ; D. p->next=head;
设有一个不带头结点的单向循环链表,结点的指针域为next,指针p指向尾结点,现要使p指向第一个结点,可用语句p=p->next;。
设有一个单向链表,结点的指针域为next,头指针为head,p指向尾结点,为了使该单向链表改为单向循环链表,可用语句p->next=head
设有一个单向循环链表,结点的指针域为next,头指针为head,指针p指向表中某结点,若逻辑表达式p->next==head;的结果为真,则p所指结点为尾结点。
要在一个单向链表中删除p所指向的结点,已知q指向p所指结点的直接前驱结点,若链表中结点的指针域为next,则可执行q->next= p->next
要在一个单向链表中p所指向的结点之后插入一个s所指向的新结点,若链表中结点的指针域为next,可执行 p->next=s; s->next= p->next;的操作。
要在一个带头结点的单向循环链表中删除头结点,得到一个新的不带头结点的单向循环链表,若结点的指针域为next,头指针为head,尾指针为p,则可执行head=head-> next; p->next=head;
A. 逻辑上相邻的元素在物理位置上不一定相邻
B. 数据元素是不能随机访问的
C. 进行数据元素的插入、删除效率较高
D. 逻辑上相邻的元素在物理位置上也相邻
对链表, 以下叙述中正确的是( )。
A. 不能随机访问任一结点
B. 插入删除元素的操作一定要要移动结点
C. 结点占用的存储空间是连续的
D. 可以通过下标对链表进行直接访问
设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为( )。
A. n-i+1 B. i
C. n-i-1 D. n-i
在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行_________。
A. HL=p;p->next=HL;
B. p->next=HL;HL=p;
C. p->next=HL;p=HL;
D. p->next=HL->next;HL->next=p;
在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则以下操作哪个是正确的( )。
A. s->next=p->next;p->next=s;
B. p->next=s->next;s->next=p;
C. p->next=s;s->next=q;
D. q->next=s;s->next=p;
在循环双链表的p所指结点之后插入s所指结点的操作是( )。
A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;
B. p->right=s;p->right->left=s;s->left=p;s->right=p->right;
C. s->left=p;s->right=p->right;p->right=s;p->right->left=s;
D. s->left=p;s->right=p->right;p->right->left=s;p->right=s;
若HL为一个不带表头结点的循环单链表的表头指针,若有HL->next= =HL条件存在,则该循环单链表是( )。
A.空表 B.只有1个元素;
C.空表或只有一个元素 D.非空表
若HL为一个带表头结点的单链表的表头指针,则该表为空表的条件是( )。
A.HL==NULL B.HL->next==NULL
C.HL->next==HL D.HL!=NULL
设头指针为head的非空的单向链表,指针p指向尾结点,则通过以下操作( )可使其成为单向循环链表。
选择一项:
A. head = p; B. p=head;
C. p->next = NULL ; D. p->next=head;
设有一个不带头结点的单向循环链表,结点的指针域为next,指针p指向尾结点,现要使p指向第一个结点,可用语句p=p->next;。
设有一个单向链表,结点的指针域为next,头指针为head,p指向尾结点,为了使该单向链表改为单向循环链表,可用语句p->next=head
设有一个单向循环链表,结点的指针域为next,头指针为head,指针p指向表中某结点,若逻辑表达式p->next==head;的结果为真,则p所指结点为尾结点。
要在一个单向链表中删除p所指向的结点,已知q指向p所指结点的直接前驱结点,若链表中结点的指针域为next,则可执行q->next= p->next
要在一个单向链表中p所指向的结点之后插入一个s所指向的新结点,若链表中结点的指针域为next,可执行 p->next=s; s->next= p->next;的操作。
要在一个带头结点的单向循环链表中删除头结点,得到一个新的不带头结点的单向循环链表,若结点的指针域为next,头指针为head,尾指针为p,则可执行head=head-> next; p->next=head;