2014 年江西师范大学 C 语言程序设计与数据结构考研真题 A
卷
一、简答题(共 8 小题,其中第 7 小题 8 分,其余每小题 6 分,共 50 分)
1.请至少列举三种以上 C 语言的主要数据类型。
2.简述 C 语言中条件表达式 max=(a>b)? a : b 的执行过程。
3.简述 C 语言中 break 语句的作用。
4 请给出指针变量定义的一般形式,并举例说明。
5.若线性表的元素个数基本稳定,且很少进行插入和删除操作,但要求以最快速度存取表中
的元素时,应采用何种存储结构?若在应用中经常增、删元素,则应采用何种存储结构?
6.对于一个栈,若输入序列为{A,B,C},试写出至少三种可能的输出序列。
7.假设双链表结构的 C 语言描述如下:
typedef int datatype;
typedef struct dlink_node{
datatype info;
struct dlink_node llink,rlink;
}dnode;
根据图 1 回答以下问题:
(1) 如何访问 q 指针所指结点的数据域?
(2) 如何访问 q 指针所指结点的直接前驱结点的数据域?
head
∧
∧
q
图 1
8.什么叫满二叉树?
二、填空题(5 个空,每空 2 分,共 10 分)
1.若有语句 int a=2;则计算表达式 a+=a 后,a 的值为_______。
2.若有说明和语句:int a=2, b; b=a++;则 a 和 b 的值分别是________、________。
3.若已定义 int x=3,y=2,则表达式 x&&y 的值为_________。
4.设有语句 int
a[10]; 则共定义了_______个数组元素。
三、判断题,对打“√”,错打“X”(5 小题,每小题 2 分,共 10 分)
1、栈是一种可在两端进行插入或删除操作的线性表。
2、队列的存储方式只能是顺序存储,不能用链式存储。
3、如果两个字符串的长度相同,则它们相等。
4、完全二叉树的某结点若无左孩子,则它必是叶子节点。
5、一棵有 n 个顶点的生成树有且仅有 n-1 条边。
四、应用题(3 小题,每小题 10 分,共 30 分)
1、对于图 2 所示的二叉树,请回答以下问题:
A
D
B
C
G
H
E
F
I
图 2
(1) 结点 C 的双亲为哪个结点?
(2) 结点 F 的层次为多少?二叉树的高度(深度)为多少?
(3) 写出这棵二叉树的前序遍历序列。
2、设哈希表长度为 11,使用哈希函数 H(x)
=
x%11 把一个整数值转换成哈希表的下标,
现给定一组关键字序列为 1,24,12,34,38,36,25,33 的数据,试画出采用线性探测法
解决冲突时所构造的哈希表。
3、对于图 3 所示的无向图 G,试给出:
B
A
C
E
图 3
D
(1) 图中每个顶点的度。
(2) 该无向图的邻接矩阵。
五、程序设计题(5 小题,每小题 10 分,共 50 分)
1、试编写一个 C 语言程序,判断从键盘输入的一个整数能否被 2 和 3 整除。若能满足上述
条件,则将其输出,否则输出不能同时被 2 和 3 整除的提示信息。
2、试编写一个 C 语言程序,从键盘为一个长度为 10 的整型一维数组输入数据,并输出数组
中值最大的元素的下标值。
3、试编写一个 C 语言程序,先定义一个整数类型的数组 a[5][5],然后给数组 a 赋值,最
后计算并输出 a 数组中每行的和。
4、设有一个线性表(a1, a2, a3,…,an),其元素递增有序且按顺序存储于计算机内。要求
设计一个算法 void search(sequence_list sl, int x )在线性表中查找数值为 x 的元素
(查找算法不限),若找到将其值与第一个元素的值进行交换,否则输出此元素不存在。
假定程序中已有用 C 语言描述的顺序表结构如下:
#define MAXSIZE 100
/*预定义最大的数据域空间*/
typedef int datatype;
/*假设数据类型为整型*/
typedef struct{
datatype a[MAXSIZE];
/*此处假设数据元素只包含一个整型的关键字域*/
int size;
/*线性表长度*/
}sequence_list;
/*预定义的顺序表类型*/
5、试编写一个算法 node *insert(node *headA, node *headB, datatype x),实现把带头
结点的 headB 单链表中值为 x 的所有结点依次插入到带头结点的 headA 单链表尾部。假定程
序中已有如下说明:
typedef int datatype;
typedef struct link_node{
datatype info;
struct link_node *next;
}node;