出自:安阳师范学院-计算机应用技术-数据结构

在图G中求两个结点之间的最短路径可以采用的算法是()。 A.迪杰斯特拉(Dijkstra)算法 B.克鲁斯卡尔(Kruskal)算法 C.普里姆(Prim)算法 D.广度优先遍历(BFS)算法
已知有向图G=(V,E),其中V={V1,V2,V3,V4},E={,,,,},图G的拓扑序列是( )。 A.V1,V2,V3,V4 B.V1,V3,V2,V4 C.V1,V3,V4,V2 D.V1,V2,V4,V3
若用邻接矩阵表示带权有向图,则顶点i 的入度等于矩阵中(   ) A.第i 行非∞元素之和 B.第i 列非∞元素之和 C.第i 行非∞元素个数 D.第i 列非∞元素个数
在一个具有n个顶点的有向图中,所有顶点的出度之和为Dout ,则所有顶点的入度之和为( ) A.Dout B.Dout-1 C.Dout+1 D.n
图的邻接矩阵表示法适用于表示(   ) A.无向图 B.有向图 C.稠密图 D.稀疏图
在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为() A.e B.2e C.n2-e D.n2-2e
主关键字能唯一标识(   ) A.一个记录 B.一组记录 C.一个类型 D.一个文件
下列查找算法中,平均查找长度与元素个数n不直接相关的查找方法是(   ) A.分块查找 B.顺序查找 C.二分查找 D.散列查找
对于哈希函数H(key)=key%13,被称为同义词的关键字是( ) A.35和41 B.23和39 C.15和44 D.25和51
对表长为n的顺序表进行顺序查找,在查找概率相等的情况下,查找成功的平均查找长度为( ) A.(n-1)/2 B.n/2 C.(n+1)/2 D.n
设有一组关键字(19, 14, 23, 1,6,20, 4,27, 5,11, 10, 9),用散列函数H(key)=key%13构造散列表,用拉链法解决冲突,散列地址为1的链中记录个数为()。 A.1 B.2 C.3 D.4
在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数为( ) 。 A.2 B.3 C.1 D.4
下列序列中,不构成堆的是(   ) A.(1,2,5,3,4,6,7,8,9,10) B.(10,5,8,4,2,6,7,1,3) C.(10,9,8,7,3,5,4,6,2) D.(1,2,3,4,10,9,8,7,6,5)
对关键字序列(5,1,4,3,7,2,8,6)进行快速排序时,以第一个元素5为基准的一次划分的结果为(   ) A.(1,2,3,4,5,6,7,8) B.(1,4,3,2,5,7,8,6) C.(2,1,4,3,5,7,8,6) D.(8,7,6,5,4,3,2,1)
对下列关键字序列进行快速排序时,所需进行比较次数最少的是(   ) A.(1,2,3,4,5,6,7,8) B.(8,7,6,5,4,3,2,1) C.(4,3,8,6,1,7,5,2) D.(2,1,5,4,3,6,7,8)
在最好和最坏情况下的时间复杂度均为O(nlogn)且稳定的排序方法是( ) A.快速排序 B.堆排序 C.归并排序 D.基数排序
已知用某种排序方法对关键字序列(51,35,93,24,13,68,56,42,77)进行排序时,前两趟排序的结果为 (35,51,24,13,68,56,42,77,93) (35,24,13,51,56,42,68,77,93) 所采用的排序方法是( ) A.插入排序 B.冒泡排序 C.快速排序 D.归并排序
对关键字序列(56,23,78,92,88,67,19,34)进行增量为3的一趟希尔排序的结果为( ) A.(19,23,56,34,78,67,88,92) B.(23,56,78,66,88,92,19,34) C.(19,23,34,56,67,78,88,92) D.(19,23,67,56,34,78,92,88)
稀疏索引是指在文件的索引表中(   ) A.为每个字段设一个索引项 B.为每个记录设一个索引项 C.为每组字段设一个索引项 D.为每组记录设一个索引项
数据库文件是由大量带有结构的( ) A.记录组成的集合 B.字符组成的集合 C.数据项组成的集合 D.数据结构组成的集合
在VSAM文件的控制区间中,记录的存储方式为( ) A.无序顺序 B.有序顺序 C.无序链接 D.有序链接
VSAM文件的索引结构为( ) A.B+树 B.二叉排序树 C.B-树 D.最优二叉树
ISAM文件和VSAM文件的区别之一是( ) A.前者是索引顺序文件,后者是索引非顺序文件 B.前者只能进行顺序存取,后者只能进行随机存取 C.前者建立静态索引结构,后者建立动态索引结构 D.前者的存储介质是磁盘,后者的存储介质不是磁盘
散列文件也称为()。 A.顺序文件 B.索引文件 C.直接存取文件 D.间接存取文件
便于进行布尔查询的文件组织方式是(   )。 A.顺序文件 B.索引文件 C.散列文件 D.多关键字文件
算法的特征是什么?
一般情况下,算法中基本操作重复执行的的 某个函数f(n),算法的时间量度记作:T(n)=O(f(n))它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度
链式存储结构的特点是借助_______来表示数据元素之间的逻辑关系。数据的存储结构是其逻辑结构在计算机中的___________。
如果某算法对于规模为n的问题的时间耗费为T(n)=3n3,在一台计算机上运行时间为t秒,则在另一台运行速度是其64倍的机器上,用同样的时间能解决的问题规模是原问题规模的________倍。称算法的时间复杂度为O(f(n)),其含义是指算法的执行时间和_______的数量级相同。
估算算法时间复杂度时考虑的问题规模通常是指算法求解问题的_________。若一个算法中的语句频度之和为T(n)=3720n+4nlogn,则算法的时间复杂度为________。
数据的逻辑结构在计算机存储器内的表示,称为数据的____________。当问题的规模n趋向无穷大时,算法执行时间T(n)的数量级被称为算法的________。
以下函数中,h是带头结点的双向循环链表的头指针。 (1)说明程序的功能; (2)当链表中结点数分别为1和6(不包括头结点)时,请写出程序中while循环体的执行次数。 int f(DListNode *h) { DListNode *p,*q; int j=1; p=h->next; q=h->prior; while(p!=q && p->prior!=q) if(p->data==q->data) { p=p->next; q=q->prior; } else j=0; return j; }
下列程序的功能是将所有小于0的元素移到全部大于等于0的元素之前。例如,有7个整数的原始序列为(x,x,-x,-x,x,x,-x),变换后数组中保存的序列是(-x,-x,-x,x,x,x,x)。请在程序处填入合适的内容,使其成为完整的算法。 f30(int a[],int n) { int k,m,temp; m= (1) ; while (a[m]<0 &&m<n) m= (2) ; k=m; while (k<n) { while(a[k]>=0&&k<n) k= (3) ; if(k<n) { temp=a[k]; a[k]=a[m]; a[m]= (4) ; m= (5) ; } } } (1) (2) (3) (4) (5)
已知线性表的存储结构为顺序表,阅读下列算法,并回答问题: (1)设线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L状态; (2)简述算法f30的功能。 void f30 (SeqList *L) { int i,j; for (i=j=0;i<L->length; i++) if(L->data[i]>=0){ if(i!=j)L->data[j]=L->data[i]; j++; } L->length=j; } (1) (2)
已知用有序链表存储整数集合的元素。阅读算法f30,并回答下列问题: (1)写出执行f30(a,b)的返回值,其中a和b分别为指向存储集合{2,4,5,7,9,12}和{2,4,5,7,9}的链表的头指针; (2)简述算法f30的功能; (3)写出算法f30的时间复杂度。 int f30(LinkList ha,LinkList hb) { //LinkList是带有头结点的单链表 //ha和hb分别为指向存储两个有序整数集合的链表的头指针 LinkList pa,pb; pa=ha->next; pb=hb->next; while(pa && pb && pa->data==pb->data) { pa=pa->next; pb=pb->next; } if(pa==NULL && pb==NULL) return 1; else return 0; } (1) (2) (3)
阅读下列算法,并回答问题: (1)设顺序表L=(3,7,11,14,20,51),写出执行f30(&L,15)之后的L; (2)设顺序表L=(4,7,10,14,20,51),写出执行f30(&L,10)之后的L; (3)简述算法的功能。 void f30(SeqList*L, DataType x) { int i =0, j; while (i<L->length && x>L->data[i])i++; if(i<L->length && x==L->data[i]) { for(j=i+1;j<L->length;j++) L->data[j-1]=L->data[j]; L->length--; } else { for(j=L->length;j>i;j--) L->data[j]=L->data[j-1]; L->data[i]=x; L->length++; } } (1) (2) (3)
已知单链表的结点结构为 data next 下列算法对带头结点的单链表L进行简单选择 排序,使得L中的元素按值从小到大排列,请在空缺处填入合适的内容,使其成为完整的算法。 void SelectSort(LinkedList L) { LinkedList p,q,min; DataTypercd; p=_________(1) while(p!=NULL)( min=p q=p->next; while(q!=NULL)( if__________(2)min=q; q=q->next;) if______(3)( rcd=p->data; p->data=min->data; min->data=rcd;) ________; ) )
阅读下列程序 void f32(int A[],int n) { int i,j,m=l,t; for (i=0; i<n-l&&m; i++) { for (j=0; j<n; j++) printf(“%d ”,A[j]); printf(“\n”); m=0: for (j=1; j<n-i; j++) if (A[j-1]>A[j]) { t=A[j-l]; A[j-1]=A[j]; A[j]=t; m=1; } } } 回答问题: 已知整型数组A[ ]={34,26,15,89,42},写出执行函数调用f32(A,5)后的输出结果。
阅读下列算法,并回答下列问题: (1)该算法采用何种策略进行排序? (2)算法中R[n+1]的作用是什么? Typedef struct { KeyType key; infoType otherinfo; } nodeType; typedef nodeType SqList[MAXLEN]; void sort(SqList R,int n) { //n小于MAXLEN-1 int k;i; for(k=n-1;k>=1;k--) if(R[k].key>R[k+1].key) { R[n+1]=R[k]; for(i=k+1;R[i].key<R[n+1].key;i++) R[i-1]=R[i]; R[i-1]=R[n+1]; } }
已知顺序表的表结构定义如下: #define MAXLEN 100 typedef int KeyType; typedef struct { KeyType key; InfoType otherinfo; } NodeType; typedef NodeType SqList[MAXLEN]; 阅读下列程序。 Int f33(SqList R,NodeType X, int p, int q) { int m; if (p>q) return -1; m=(p+q)/2; if (R[m].key==X.key) return m; if (R[m].key>X.key) return f33(R,X,p,m-l); else return f33(R,X,m+l,q); } 请回答下列问题: (1)若有序的顺序表R的关键字序列为(2,5,13,26,55,80,105),分别写出X.key=18和X.key=26时,执行函数调用f33(R,X,0,6)的函数返回值。 (2)简述算法f33的功能。
在等概率情况下,在长度为n的顺序表中插入和删除一个结点需平均移动___________个结点和___________个结点,具体的移动次数取决于___________和___________。
输入线性表的n个元素建立带头结点的单链表,其时间复杂度为___________。在双向循环链表中插入一个新的结点时,应修改_________个指针域的值。
在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为head=___。
将两个长度分别为m和n的递增有序单链表,归并成一个按元素递减有序的单链表,可能达到的最好的时间复杂度是 _____。在一个长度为n的单链表L中,删除链表中*p的前驱结点的时间复杂度为_________。
如果需要对线性表频繁进行_____操作,则不宜采用顺序存储结构。长度为n的线性表采用单链表结构存储时,在等概率情况下查找第i个元素的时间复杂度是___。
在一个长度为100的顺序表中删除第10个元素时,需要移动 个元素。
要在[0..n-l]的向量空间中建立两个栈stackl和stack2,请回答: (1)应该如何设计这两个栈才能充分利用整个向量空间? (2)若stackl的栈顶指针为topl,stack2的栈顶指针为top2,如果需要充分利用整个向量空间,则: 栈stackl空的条件是:___________; 栈stack2空的条件是:___________; 栈stackl和栈stack2满的条件是:___________。
链栈中为何不设置头结点?
设栈S=(1,2,3,4,5,6,7),其中7为栈顶元素。请写出调用algo(&s)后栈S的状态。 void algo(Stack *S) { int i=0; Queue Q; Stack T; InitQueue(&Q);InitStack(&T); while (!StackEmpty(S)) { if((i=!i)!=0)Push(&T,Pop(&S)); else EnQueue(&Q,Pop(&S)); } while(!QueueEmpty(Q)) Push(&S,DeQueue(&Q)); while(!StackEmpty(T)) Push(&S,Pop(&T)); }
栈和线性表的差别为线性表是具有 的数据元素的一个有限序列。栈是限定仅在 进行插入或删除操作的线性表。