如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
测试题一、单选题1.在一个长度为n的顺序存储线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移()个元素。A、n-iB、n-i+1C、n-i-1D、i2.在一个长度为n的顺序存储线性表中,删除第i个元素(1≤i≤n+1)时,需要从前向后依次前移()个元素。A、n-iB、n-i+1C、n-i-1D、i3.在一个单链表HL中,若要在指针q所指的结点的后面插入一个由指针p所指的结点,则执行()。A、q->next=p->next;p->next=q;B、p->next=q->next;q=p;C、q->next=p;p->next=q;D、p->next=q->next;q->next=p;4.在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行()。A、p=q->next;p->next=q->next;B、p=q->next;q->next=p;C、p=q->next;q->next=p->next;D、q->next=q;5.栈的插入与删除操作在()进行。A、栈顶B、栈底C、任意位置D、指定位置6.若让元素1,2,3依次入队,则出队次序是()。A、3,2,1B、1,2,3C、3,1,2D、1,3,27.假定一个循环顺序队列的队首和队尾指针分别为f和r,则判断队空的条件是()。A、f+1==rB、r+1==fC、f==0D、f==r8、队列操作的原则是()。A先进先出B后进先出C只能进行插入D只能进行删除9、栈和队列的共同特点是()。A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点10、判断一个顺序非循环队列cq(最多元素为QueueSize)为满队列的条件是()。A.cq.rear=cq.frontB.cq.rear=QueueSizeC.(cq.rear+1)%QueueSize=cq.frontD.cq.rear%QueueSize+1=cq.front11、设一条单链表的头指针变量为head且该链表有头结点,则其判空条件是()。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL12、设有两个串s和t,求t在s中首次出现的位置的运算是()。A.连接B.模式匹配C.求子串D.求串长13、串长度的定义是()A.串中不同字母的个数B.串中不同字符的个数C.串中所含字符的个数,且大于0D.串中所含字符的个数14、判断一个顺序循环队列cq(最多元素为QueueSize)为满队列的条件是()。A.cq.rear=cq.frontB.cq.rear=QueueSizeC.(cq.rear+1)%QueueSize=cq.frontD.cq.rear%QueueSize+1=cq.front15、串是一种特殊的线性表,其特殊性体现在()。A.可以顺序存储B.数据元素是一个字符C.可以用链表存储D.数据元素可以是多个字符答案:BADCABDAABBBDCB二、算法填空题在单链表第i个位置插入结点算法填空对于有头结点的单链表,单链表存储结构定义如下:typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList;voidInsert_LinkList(LinkList&L,inti,ElemTypee){LinkListp,s;intj=0;p=;//p指针赋初值while(p&&j<i-1)//指针定位第i-1个结点{p=;++j;}//分配新结点s=(LinkList)malloc(sizeof(LNode));s->data=;//新结点插入=p->next;p->next=;}答案Lp->nextes->nexts三、算法设计题对于有头结点的单链表单链表存储结构定义如下:typedefstructLNode{intdata;structLNode*next;}LNode,*LinkList;对于结点类型为LNode的单链表,编写出下列每个算法。(1)删除单链表中的第i个结点。(2)在有序单链表中插入一个元素x的结点。(3)从单链表中查找出所有元素的最大值,该值由函数返回,若单链表为空,则显示出错信息并停止运行。统计出单链表中结点的值等于给定值x的结点数。voidDelete_LinkList(LinkList&L,inti,ElemType&e){LinkListp,q;