算法阅读题
第1题
已知队列的基本操作定义如下,请在空白处填写适当的语句,完成指定的功能。 #define QueueSize 100
typedef struct { //队列定义
char data[QueueSize];
int front, rear;
} CirQueue;
CirQueue Q;
void Init Queue( CirQueue *Q) //队列初始化
{ Q->front=Q->rear=0;;
}
int Queue Empty( CirQueue *Q) //判队列是否空
{ return ____(1)____;
}
int Queue Full( CirQueue * Q) //判队列是否满
{ return(Q->rear+ 1)% QueueSize==Q->front;
}
char EnQueue( CirQueue *Q, char c) ///入队操作
{ if (QueueFulk(Q))
return ‘\0’; //^操作失败
else
{ Q->data[ Q->rear]=c;
Q->rear=____(2)____;
retum c; //操作成功
}
}
char DeQueue(CirQueue *Q) //出队列操作
{ char x;
if( Queue Empty(Q))
return ‘\n’; //操作失败
else
{ x=Q->data[[Q->font];
O->front=____(3)____;
retum x; //操作成功
}
}
第2题
程序f31是将输入的m行n列的二维数组a变换为三元组表形式存储在数组b中。请在空白处填上适当内容将算法补充完整。
#define MAXSIZE 100
typedef int DataType;
typedef struct {
int i, j; //1非零元素行列下标
Data Type v; //非零元素值
} TriTupleNode;
typedef struct {
TriTupleNode data[MAXSIZE]; //存储三元组数组
int m, n, t; //m:矩阵的行,n:矩阵的列,t非零元素数量
} TSMatrix;
void f31(TSMatrix *b, int*a, int m, int n)
//将m行n列的矩阵a变换为三元组表形式存储在b中
{ int i, j, k=0;
for(i=0; i<m;i++);
for(j=0; j<a;j++)
{ b->data k].i=i;
b->data k].j=j;
b->data[k].v=____(1)____;
____(2)____;
}
b->m=m;
b->n=n;
b->t=____(3)____;
}
第3题
已知二叉树T如题32图所示。
阅读程序f32,写出执行f32(T)的输出结果。
typedef char DataType
typedef struct node
{ DataType data; //data是数据域
struct node * lchild, * rchild; //分别指向左右孩子
} BinTNode;
typedef BinTNode * BinTree;
void f32( BinTree bt)
{ if(bt!=NULL)
{ f32(bt->rchild);
printf(“%c”, bt->data);
f32(bt->lchild);
}
}
执行结果:
第4题
阅读程序,写出执行结果。
void f33(int a[], int n)
{ int i;
for(i=(n-1)/2; i>=0; i--)
Sift(a, i, n-1);
}
void Sift( inta[], int i, int h)
{ int j, temp *a[i];
j=2*i+1;
while(j<=h)
{ if((j<h&&a[j]<a[j+1])
j++;
if( temp=>=a[j])
break;
a[i]=a[j];
i=j;
j=2*i+1;
}
a[i]=temp;
}
int main()
{ int i, a[10]={10,20,5,23,25,62,21,1,32,39};
f33(a,10);
for(i=0; i<10; i++)
printf(“%d,”,a[i]);
printf(“\n”);
return 0;
}
执行结果:
本文导航
- 第1页: 首页
- 第2页: 填空题
- 第3页: 解答题
- 第4页: 算法阅读题
- 第5页: 算法设计题