当前位置:文档之家› 专升本数据结构试题解析

专升本数据结构试题解析

s->next=_____________;
p->next=s;
t=p->data;
p->data=_____________;
s->data=_____________;
【答案】(1)p->next(2)s->data(3)t
10.某线性表采用顺序存储结构,每个元素占据4个存储单元,首地址为100,则下标为11的(第12个)元素的存储地址为_____________。
【答案】(1)逻辑结构(2)物理结构(3)操作(运算)(4)算法。
6.一个算法具有5个特性:_____________、_____________、_____________,有零个或多个输入、有一个或多个输出。
【答案】(1)有穷性(2)确定性(3)可行性。
9.已知如下程序段
for(i=n;i>0;i--)
D)p->prior->next=q; q->next=p; q->prior=p->prior; p->prior=q;
【答案】D
4.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是()
A)O(nlog2n)B)O(1)C)O(n)D)O(n2)
【答案】C
5.在一个以h为头指针的单循环链中,p指针指向链尾结点的条件是()


1.1
1.算法的时间复杂度取决于(C)
A)问题的规模B)待处理数据的初态C)A和B
【答案】C
2.计算机算法指的是解决问题的步骤序列,它必须具备(B)这三个特性。
A)可执行性、可移植性、可扩充性B)可执行性、确定性、有穷性
C)确定性、有穷性、稳定性D)易读性、稳定性、安全性
【答案】B
5.从逻辑上可以把数据结构分为(C)两大类。
{
for(i=1;i<=A.length&&i<=B.length;i++)
if(A.elem[i]!=B.elem[i])
return A.elem[i]>B.elem[i]?1:-1;
if(A.length==B.length) return 0;
return A.length>B.length?1:-1;
10.在下面的程序段中,对x的赋值语句的频度为_____________(表示为n的函数)
for(i=0;i>n;i++)
for(j=0;j>i;j++)
for(k=0;k>j;k++)
x=x+delta;
【答案】1+(1+2)+(1+2+3)+…+(1+2+…+n)=n(n+1)(n+2)/6,O(n3)
【答案】A
2.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法时间复杂度为( )(1≤i≤n+1)。
A)O(0)B)O(1) C)O(n) D)O(n2)
【答案】C
3.双向链表中有两个指针域,prior和next,分别指向前驱及后继,设p指向链表中的一个结点,q指向一待插入结点,现要求在p前插入q,则正确的插入为()
2)将new插入在单链表的第i个元素的位置上:若i==1,new插在链表首部;否则查找第i-1个结点,由指针p指向,然后将new插在p之后。
【算法源代码】
void Insert(LinkList *L,int i,int b)
{ LinkList new;
new=(LinkList*)malloc(sizeof(LNode));
2.在单链表中设置头结点的作用是_____________。
【答案】主要是使插入和删除等操作统一,在第一个元素之前插入元素和删除第一个结点不必另作判断。另外,不论链表是否为空,链表头指针不变。
3.线性表的顺序存储是通过_____________来反应元素之间的逻辑关系,而链式存储结构是通过_____________来反应元素之间的逻辑关系。
/*
}/*ListComp */
3.已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n。试设计一个算法将这两个链表连接在一起(即令其中一个表的首元结点连在另一个表的最后一个结点之后),假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。
【算法分析】
/*
{
*hc=ha;
p=ha;/*
p=p->next;
p->next=hb->next;
free(hb);
}/*ListConcat */
4.试设计一个算法,在无头结点的动态单链表上实现线性表操作INSERT(L,i,b),并和在带头结点的动态单链表上实现相同操作的算法进行比较。
【算法分析】
1)生成新结点存放元素b,由指针new指向;
【答案】(1)集合(2)线性结构(3)树形结构(4)图状结构或网状结构
4.数据结构中评价算法的两个重要指标是_____________。
【答案】算法的时间复杂度和空间复杂度。
5.数据结构是研讨数据的_____________和_____________,以及它们之间的相互关系,并对与这种结构定义相应的_____________,设计出相应的_____________。
A)p->prior=q; q->next=p; p->prior->next=q; q->prior=p->prior;
B)q->prior=p->prior; p->prior->next=q; q->next=p; p->prior=q->next;
C)q->next=p; p->next=q; p->prior->next=q; q->next=p;
【答案】144
11.带头结点的双循环链表L中只有一个元素结点的条件是_____________。
【答案】L->next->next==L
2.3
1.取线性表的第i个元素的时间同i的大小有关( )
【答案】×
2.线性表的特点是每个元素都有一个前驱和一个后继( )
【答案】×
3.顺序存储方式的优点是存储密度大,且插入、删除运算效率高( )
11.下面程序段中带下划线的语句的执行次数的数量级是_____________。
i=1; while(i<n)i=i*2;
【答案】log2n
12.计算机执行下面的语句时,语句s的执行次数为_____________。
for(i=l;i<n-l;i++)
for(j=n;j>=i;j--) s;
【答案】(n+3)(n-2)/2
【答案】(1)O(1)(2)O(n)
7.对于双向链表,在两个结点之间插入一个新结点需修改的指针共_____________个,单链表为_____________个。
【答案】(1)4(2)2
8.循环单链表的最大优点是_____________。
【答案】从任一结点出发都可访问到链表中每一个元素。
9.若要在一个不带头结点的单链表的首结点*p结点之前插入一个*s结点时,可执行下列操作:
A)p->next==NULLB)p->next==h
C)p->next->next==hD)p->data==-1
【答案】B
6.对于一个具有n个结点的线性表,建立其单链表的时间复杂度是( )
A)O(n) B)O(1) C)O(nlog2n) D)O(n2)
【答案】A
8.在双向链表存储结构中,删除p所指的结点时须修改指针( )
{ x=x+1;
for(j=n;j>=i;j--)
y=y+1;
}
语句1执行的频度为_____________;语句2执行的频度为_____________;语句3执行的频度为_____________;语句4执行的频度为_____________。
【答案】(1)n+1(2)n(3)n(n+3)/2(4)n(n+1)/2
A)动态结构、静态结构B)顺序结构、链式结构
C)线性结构、非线性结构D)初等结构、构造型结构
【答案】C
6.在下面的程序段中,对x的赋值的语句频度为(C)
for(i=0;i<n;i++)
for(j=0;j<n;j++) x=x+1;
A)O(2n)B)O(n)C.O(n2)D.O(log2n)
【答案】C
A)p->prior->next=p->nextp->next->prior=p->prior;
B)p->prior=p->prior->priorp->prior->next=p;
C)p->next->prior=pp->next=p->next->next
D)p->next=p->prior->priorp->prior=p->next->next;
【答案】(1)数据元素的前后顺序(2)元素中的指针
4.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,则采用_____________存储结构最节省时间,相反当经常进行插入和删除操作时,则采用_____________存储结构最节省时间。
【答案】(1)顺序(2)链式
相关主题