数据结构
历年真题
设循环队列保存在数组Q[N]中,front和rear分别为队头和队尾指针,初始时front=rear=0,约定指针rear指向的单元始终为空,请用C语言分别描述下列操作:(1)将数据元素x入队。(2)将队首元素出队,并保存到变量myData中。(3)计算队列中当前数据元素的个数,并保存到变量DLenth中。
已知待排序记录的关键字序列为(45,37,75,18,53,31,48,37),请回答下列问题。(1)画出其对应的完全二叉树T。(2)将T调整为对应的大根堆,给出大根堆序列。
单链表类型定义如下:typedef struct node{DataType data;struct node *next;}LinkNode;typedef LinkNode *Linklist;函数f30的功能是删除带头结点的单链表中data值为x的全部结点,请在空白处填上适当内容将算法补充完整。void f30(Linklist head,DataTypex){LinkNode *p,*q,*s;p=head;q=(1);while(q!=NULL)if((2)){s=q;q=q->next;p->next=q;free(s);}else{p=q;q=(3);}}
阅读下列函数并回答问题。void f32(int r[],int N){int i,j,temp;for(i=1;i< N;i++){temp=r[i];j=i-1;while(temp< r[j]){r[j+1]=r[j];j=j-1;}r[j+1]=temp;}}(1)若t[8]=(3,12,5,78,6,9,4,35),写出执行函数f32(t,8)后数组t中的各元素。(2)函数f32的功能是什么?
函数f33实现二分查找,请回答下列问题。(1)在空白处补充适当内容,使函数功能完整。(2)如果待查序列R为(4,5,6,16,25,34,55,89),分别给出执行f33(R,9,8)和f33(R,34,8)的返回值。int f33(SeqList R[],KeyType k,int n){int low=0,mid,high=n-1;while(low< =high){mid=(low+high)/2;if(R[mid].key==k)return mid;if((1))high=mid-1elselow=mid+1;}return-1;}
二叉树的二叉链表类型定义如下:typedef struct node{int data;struct node *lchild,*rchild;}BinNode;typedef BinNode *BinTree;编写函数f34(BinTree Bt),返回二叉树Bt中数据元素的最大值。函数的原型为:int f34(BinTree Bt)。
下列选项中,采用了链式方式存储的是
线性表采用顺序存储时的优点是
n阶方阵A是对称矩阵,现要使用一维数组B按行优先存储A的上三角部分,B的元素个数至少是
已知广义表LS=(((a,b,c)),((d,(e))),(f,(g)),(h),i),LS的深度是
«
1
2
...
38
39
40
41
42
43
44
...
53
54
»