- 12
- 0
- 约3.16千字
- 约 4页
- 2020-06-11 发布于山东
- 举报
2013-2014《数据结构》期末考试笔试样题
一、单项选择题(每小题2分,共16分)
1.若将数据结构形式定义为二元组(K,R),其中K是数据元素的有限集合,则R是K上( )
A.操作的有限集合 B.映象的有限集合
C.类型的有限集合 D.关系的有限集合
2.在头指针为head且表长大于1的单循环链表中,指针p指向表中某个结点,若p-next-next=head,则( )
A.p指向头结点 B.p指向尾结点
C.*P的直接后继是尾结点 D. *p的直接后继是头结点
3.在具有n个结点的有序单链表中插入一个新结点并使链表仍然有序的时间复杂度是( )
A.O(1) B.O(n) C.O(nlogn) D.O(n2)
4.队列和栈的主要区别是( )
A.逻辑结构不同 B.存储结构不同
C.所包含的运算个数不同 D.限定插入和删除的位置不同
5.若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的不同排列个数为( )
A.4 B.5 C.6 D.7
6.一棵含18个结点的二叉树的高度至少为( )
A.3 B.4 C.5 D.6
7.在一个带权连通图G中,权值最小的边一定包含在G的( )
A.最小生成树中 B.深度优先生成树中
C.广度优先生成树中 D.深度优先生成森林中
8.已知一组关键字为{25,48,36,72,79,82,23,40,16,35},其中每相邻两个数为有序子序列。对这些子序列进行一趟长度为2的两两归并的结果是( )
A.{25,36,48,72,23,40,79,82,16,35}
B.{25,36,48,72,16,23,40,79,82,35}
C.{25,36,48,72,16,23,35,40,79,82}
D.{16,23,25,35,36,40,48,72,79,82}
二、算法阅读题(每小题8分,共16分)
1.带头结点的单链表存储结构定义如下:
typedef struct node
{ int data;
struct node *next;
}linknode;
typedef linknode *linklist;
阅读算法fun(linklist head),回答:
该算法的主要功能是什么?
对如下所示的单链表head,画出执行fun(head)单链表的状态。
该算法的时间复杂度是多少?
void delete(linklist head)
{ linklist pre,p,q;
p=head-next;
while(p)
{ pre=p;
q=p-next;
while (q)
{ while (q q-data!=p-data) /*查找与p结点相同的结点*/
{pre=q;
q=q-next;
}
if (q) /*查找到了*/
{ pre-next=q-next; /*删除结点q*/
free(q);
q=pre-next;
}
}
p=p-next;
}
}
2.已知二叉树的存储结构为二叉链表,阅读下面算法。
typedef struct node1{
char data;
struct node1 * next;
}listnode;
typedef listnode * linklist;
linklist leafhead=NULL;
linklist inorder (bintree t ) /*t为二叉树的根结点指针*/
{ linklist s;
if(t){
inorder(t-lchild);
if (( t-lchild==NULL ) ( t-rchild ==NULL))
{ s=(linklist)malloc(sizeof(listnode));
s-data=t-data; s-next=leafhead; leafhead=s;
}
inorder(t-rchild);
}
}
对于如右所示的二叉
原创力文档

文档评论(0)