A.单链表是仅有一个数据域和一个指针域
B.双向链表有两个指针域:一个称为左指针,用以指向其前驱节点;另一个称为右指针,用以指向其后继节点
C.在线性结构中进行插入与删除数据时,需要移动链表中的元素
D.在线性链表中,各数据元素节点的存储空间可以是不连续的,且各数据元素的存储顺序可以同逻辑顺序不一致
第1题
A、在循环单链表中,从表中任一结点出发都可以通过前后移动操作来遍历整个循环链表。
B、在双向链表中,可以从任一结点开始沿同一方向查找到任何其他结点。
C、单链表不具有随机存取特性,而双向链表具有随机存取特性。
D、为了方便插入和删除,可以使用双向链表存放数据。
第2题
A、LinkedList集合内部维护了一个双向循环链表。
B、LinkedList集合适合进行增删操作。
C、LinkedList集合查找元素比Arraylist迅速。
D、LinkedList集合中的元素索引从0开始。
第3题
A、向量和列表的内部存储结构相同,都是链表
B、列表中每个元素的内存空间是独立分配的,而向量是连续存储的
C、列表适合于存储需频繁添加删除的数据集合,而向量适合于存储元素总数相对固定的数据集合,即向量不适合频繁地添加删除元素
D、列表的迭代器类型是双向迭代器,而向量的迭代器类型是随机访问迭代器(可使用下标访问元素)
第4题
A、用链式存储结构存储的栈称为链栈
B、链栈通常用单链表表示,并把栈顶设在链表尾部
C、元素入链栈前,需判断栈是否为满
D、如果链栈为空,栈顶指标器top=null
第5题
A、用链式存储结构存储的队列称为链队列
B、链队列通常用单链表表示,并把队头指针设置在链表尾部
C、元素入链队列前,必须判断队列是否为满
D、如果队列为空,需要队头和队尾指针的值都为null
第6题
第7题
【题目描述】
下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。
其累加和通过函数值返回main()函数。例如,若n=5,则应输出8.391667。
请改正程序中的错误,使它能得到正确结果。
[注意] 不要改动main函数,不得增行或删行,也不得更改程序的结构。
[试题源程序]
#include<stdio.h>
#include<stdiib.h>
typedef struct aa
{
int data;
struct aa *next;
}NODE;
int fun(NODE *h)
{
int sum=0;
NODE *P;
/**********found**********/
p=h;
while(P->next)
{
if(p->data%2==0)
sum+=p->data;
/**********found**********/
p=h->next;
}
return sum;
}
NODE *creatlink(int n)
{
NODE *h, *p, *s, *q;
int i, x;
h=p=(NODE *)malloc(si zeof(NODE));
for(i=1; i<=n; i++)
{
s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h, FILE *Pf)
{
NODE *p;
p=h->next;
fprintf(Pf, "\n\nTHE LIST:\n\n HEAD");
while(P)
{
fprintf(Pf, "->%d", p->data); p=p->next;
}
fprintf(pf, "\n");
}
outresult(int s, FILE *pf)
{
fprintf(Pf, "\nThe sum of even numbers : %d\n", s);
}
main()
{
NODE *head; int even;
head=creatlink(12);
head->data=9000;
outlink(head, stdout);
even=fun(head);
printf("\nThe result :\n"); outresult(even, stdout);
}
第8题
阅读下列说明和程序,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
在开发某嵌入式系统时,设计人员根据系统要求,分别编写了相关程序,其中:
【程序1】是李工编写的一个数据交换子程序。
【程序2】是赵工编写的一段利用递归方法判别链表表示的两个数据结构是否相等的程序,若相等则返回值为1,否则返回为0。判别的准则是若两个链表的首指针相等,则相等;否则进行内部元素比较,元素中的itemid表示后面联合体un的有效性,itemid为0时,联合体un里面的data项有效,否则联合体un中的link项有效。
【程序1】
#include <stdio.h>
swap(int x,int y){
int t:
t= x;
x=y;
y=t;
}
main() {
int a,b;
a=3;
b=4;
swap(a,b);
printf(”%d, %d\n",a,b);
}
【程序2】
typedef struct Item {
int itemid;
union {
char data;
struct Item *link;
}un;
struct Item *nextItem;
} ItemNode;
int EqualItem( ItemNode*x,ItemNode*y){
int res;
if(x==y) retun1;
if(1){
if (2){
If(x->itemid==0){
res= (3) ;
}
else{
res= (4) ;
}
if (res){
retun (5) ;
}
}
}
Return0;
}
【问题1】(6分)
执行【程序1】后,打印出来的a=3,b=4;并没有完成数据交换,请指出李工的问题?并改正程序错误。将答案填写在答题纸中对应的栏目。
【问题2】(5分)
仔细阅读并分析【程序2】中的C语言代码,完成其中(1)~(5)空白填空,将
答案填入答题纸的对应栏内。
【问题3】(4分)
李工编写某嵌入式软件时,遇到了一些问题,请帮助李工解答下面2个问题,并将答案填写在答题纸中对应的栏目。
(1)李工在编译时,程序没有通过编译,经检查程序后将文件头的#include<filename.h>改为#include“filename.h”后编译通过,请问#include <filename.h>和#include“filename.h”的区别是什么?
(2)李工在编写一段C++程序时,需要调用一段已编译的C语言函数,为什么要加exten“C”?
第9题
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
第10题
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且各前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!