文档详情

C 语言 习题及思考题.doc

发布:2017-10-13约2.05万字共11页下载文档
文本预览下载声明
习题及思考题 1.思考题 (1)请描述头结点、头指针、首元结点之间的区别? (2)顺序存储与链式存储有何异同?各适用于什么场合? (3)在多项式加法运算中,如果要求在创建时自动创建一个有序链表,应如何修改程序? 2.选择题 (1)以下关于链式存储结构的描述中, ( )是不正确的。 A. 不必事先估计存储空间的大小 B. 逻辑上相邻的结点物理上不必相邻 C. 可以通过计算直接确定第i个结点的地址 D. 插入删除方便,不必移动结点 (2)某线性表中最常用的操作是存取序号为i的元素和在最后进行插入删除运算,则采用( )存储方式时间性能最好。 A.双向链表 B.双向循环链表 C. 单向循环链表 D.顺序表 (3)假设带头结点的单向循环链表的头指针为head,则该链表为空的判定条件是(   ) A.head= =NULL B.head–next= =NULL C.head!=NULL D.head–next= =head (4)已知一个单链表中,指针q指向指针p的前驱结点,若在指针q所指结点和指针p所指结点之间插入指针s所指结点,则需执行( ) A. q→next=s;p→next=s; B.q→next=s;s→next=p; C. q→next=s;q→next=p; D.q→next=s;s→next=q; (5)设顺序表有19个元素,第一个元素的地址为200,且每个元素占3个字节,则第14个元素的存储地址为( ) A.236 B.239 C.242 D.245 (6)在线性表的下列运算中,不改变数据元素之间结构关系的运算是(   ) A.插入 B.删除 C.排序 D.定位 (7)在双向链表指针p的结点前插入一个指针q的结点操作是( )。 A. p-prior=q;q-next=p;p-next-prior=q;q-prier=q; B. p-prior=q;p-prior-next=q;q-next=p;q-prior=p-prior; C. q-next =p;q-prior=p-prior;p-prior-next=q;p-prior=q; D. q-prior=p-prior;q-next=q;p-prior=q;p-prior-nex=q; (8)线性表采用链式存储结构时,要求内存中可用存储单元的地址( ) A. 必须是连续的 B. 必须是部分连续的 C. 一定是不连续的 D. 连续和不连续都可以 (9)带头结点的单链表head为空的判定条件是( ) A.head == NULL B.head-next == NULL C.head-next == head D.head != NULL (10)在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为(?? ) A.n-i+1????? ?? B.n-i ? C.i??????? D.i-1 (11)对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为(?? ) A.顺序表??????? B.用头指针表示的单循环链表 C.用尾指针表示的单循环链表??????? D.单链表 p所指结点时须修改指针( ) A. p-next-prior=p-prior;p-prior-next=p-next; B. p-next=p-next-next;p-next-prior=p; C. p-prior-next=p;p-prior=p-prior-prior; D. p-prior=p-next-next;p-next=p--prior-prior; (13)在双向循环链表中,在p指针所指的结点后插入一个指针所指向的新结点,其修改指针的操作是 ( ) A. p-next=q;q-prior=p;p-next-prior=q;q-next=q; B. p-next=q;p-next-prior=q;q-prior=p;q-next=p-next; C. q-prior=p;q-next=p-next;p-next-prior=q;p-next=q; D. q-next=p-next;q-prior=p;p-next=q;p-next=q; 3.判断题 (1)通常单链表的存取必须从头指针开始。 ( ) (2)单循环链表的
显示全部
相似文档