【燕山大学2001二、2(3分)】 29.广义表A=((a,b),(c,d,e)),取出A中的原子e的操作是 【合肥工业大学1999三、5(2分)】 .设某广义表H=(A,(a,b,c),运用head函数和tail函数求出广义表H中某元素b 的运算式 【北京科技大学1997一、5】 31.广义表A((),(a,(b),c)),head(tail(head(tail(head(A)等于 【合肥工业大学2000三、5(2分)】 32.广义表运算式HEAD(TAIL((a,b,c),(x,y,z)))的结果是 【西安电子科技大学1999软件一、9(2分)】 33.已知广义表A=((a,b),(c),(d,e)),head(tail(tail(head(A))的结果 【合肥工业大学2001 (2分)】 34.利用广义表的 GetHead和 GetTail操作,从广义表L=(( apple,pear),( banana, orange)) 中分离出原子 banana的函数表达式是 【山东大学2001三、6(2分)】 35.已知a数组元素共5个,依次为12,10,5,3,1:b数组元素共4个,依次为4,6,8,15 则执行如下所示的过程语句sort后得到c数组各元素依次为15,12,10,8,6,5,4,3,1:数组 a,b,c的长度分别为1=5,m=4,n=9请在程序中方框内填入正确的成分,完成上述要求。 PROCEDURE sort VAR i, j, k, x: integer: d: ARRAY[l. m] OF integer BEGIN FOR i: =1 TO m do d[i]: =(1) While (i<=l) AnD (j<=m)DO BEGIN IF a[il>d[j] THEN BEGIN (2);(3) END ELSE BEGIN(4 END [k]:=x END WHILE (7) BEGIN c[k]: =a[i]: k: =k+1: 1: =i+1: END WHILE (8) BEGIN c[k]: =d[j]: k: =k+1: j: =j+1: END END.{sort}【上海交通大学1998七(12分)】 36.下列程序段 search(a,n,k)在数组a的前n(n>=1)个元素中找出第k(1<=k<=n)小的值 这里假设数组a中各元素的值都不相同。 #define maxn 100 int search c(int a[, int n, int k) k一-,;low=0;high=n-1 j=high: t=a[low] do while (i<j & t<a])
_______。 【燕山大学 2001 二、2 (3 分)】 29. 广义表 A=(((a,b),(c,d,e))),取出 A 中的原子 e 的操作是: _______。 【合肥工业大学 1999 三、5(2 分)】 30. 设某广义表 H=(A,(a,b,c)) ,运用 head 函数和 tail 函数求出广义表 H 中某元素 b 的运算式_______。 【北京科技大学 1997 一、5】 31. 广义表 A((( ),(a,(b),c))),head(tail(head(tail(head(A))))等于 。 【合肥工业大学 2000 三、5(2 分)】 32. 广义表运算式 HEAD(TAIL(((a,b,c),(x,y,z))))的结果是_______。 【西安电子科技大学 1999 软件 一、9(2 分)】 33. 已知广义表 A=(((a,b),(c),(d,e))),head(tail(tail(head(A))))的结果 是_______。 【合肥工业大学 2001 三、5 (2 分)】 34. 利用广义表的 GetHead 和 GetTail 操作,从广义表 L=((apple,pear),(banana,orange)) 中分离出原子 banana 的函数表达式是_______。 【山东大学 2001 三、6 (2 分)】 35. 已知 a 数组元素共 5 个,依次为 12,10,5,3,1;b 数组元素共 4 个,依次为 4,6,8,15, 则执行如下所示的过程语句 sort 后得到 c 数组各元素依次为 15,12,10,8,6,5,4,3,1;数组 a,b,c 的长度分别为 l=5,m=4,n=9 请在程序中方框内填入正确的成分,完成上述要求。 PROCEDURE sort; VAR i, j, k, x: integer; d: ARRAY[1..m] OF integer; BEGIN FOR i:=1 TO m DO d[i]:=(1) ; i:=1; j:=1; k:=1; WHILE (i<=l) AND (j<=m) DO BEGIN IF a[i]>d[j] THEN BEGIN(2) ; (3) _END ELSE BEGIN (4)__; (5) __END; c[k]:=x; (6) END; WHILE(7) _DO BEGIN c[k]:=a[i]; k:=k+1; i:=i+1;END; WHILE(8) _DO BEGIN c[k]:=d[j]; k:=k+1; j:=j+1;END; END. {sort} 【上海交通大学 1998 七 (12 分)】 36. 下列程序段 search(a,n,k)在数组 a 的前 n(n>=1)个元素中找出第 k(1<=k<=n)小的值。 这里假设数组 a 中各元素的值都不相同。 #define MAXN 100 int a[MAXN],n,k; int search_c(int a[], int n, int k) {int low, high, i, j, m, t; k--,;low=0 ;high=n-1; do {i=low; j=high ; t=a[low]; do{while (i<j && t<a[j]) j--;
if (i<j ali++]=alj] while (i<j&&t>=a[i])i++ if (ij alj-]=alil I while (i<j) if (i<k) low=(2) else high=(3) Iwhile(4 return(a[]) 【上海大学1999一、1(8分)】 37.完善下列程序,每小题在 PASCAL语言(a)和C语言(b)中任选一题。下面是一个将 广义表逆置的过程。例如原来广义表为((a,b),c,(d,e),经逆置后为:(e,d),c,(b,a)) a)算法的 PASCAL语言过程描述(编者略):(b)算法的C语言过程描述: typedef struct glistnode struct glistnode *next union char data struct struct glistnode *hp, *tp: ptr I*glist, gnode; glist reverse(p) glist p iglist g, h, t, s if(p==NULL) Q=NULL lif(1)( g=(glist)malloc(sizeof (gnode)): q->tag=0 else le q>val data=p->val data: H f(3) It=reverse(p->val ptr. tp):s=t while(s->val ptr. tp! =NULL) s=s->val ptr. tp; s->val ptr. tp=(glist)malloc(sizeof(gnode)) s=s->val ptr. tp; s->tag=l; s->val ptr. tp=NULL val ptr. hp=h;(4 else iq=(glist)malloc(sizeof(gnode)); g->tag=l q->val ptr. tp=NULL;(5) I return(a) 【上海大学2002六、3(10分)】 38.完善下列程序,每小题在 PASCAL语言(a)和C语言(b)中任选一题。下面的程序将 数列1,2,3,…,n*,依次按蛇型方式存放在二维数组A[1.n,1..n]中。即(示意圖编者略) (a)算法的 PASCAL语言程序描述(编者略):(b)算法的C语言程序描述」
if (i<j) a[i++]=a[j]; while (i<j && t>=a[i]) i++ if (i<j) a[j--]=a[i]; } while (i<j); a[i]=t; if (1) ; if (i<k) low= (2) ; else high= (3) ; }while(4) _; return(a[k]); } 【上海大学 1999 一、1(8 分)】 37. 完善下列程序,每小题在 PASCAL 语言(a)和 C 语言(b)中任选一题。下面是一个将 广义表逆置的过程。例如原来广义表为((a,b),c,(d,e)),经逆置后为:((e,d),c,(b,a))。 (a)算法的 PASCAL 语言过程描述(编者略):(b)算法的 C 语言过程描述: typedef struct glistnode {int tag; struct glistnode *next; union{char data; struct{struct glistnode *hp,*tp;}ptr; }val; }*glist,gnode; glist reverse(p) glist p; {glist q,h,t,s; if(p==NULL) q=NULL; else {if(1) { q=(glist)malloc(sizeof(gnode)); q->tag=0; q->val.data=p->val.data; } else {(2) if (3) {t=reverse(p->val.ptr.tp); s=t; while(s->val.ptr.tp!=NULL) s=s->val.ptr.tp; s->val.ptr.tp=(glist)malloc(sizeof(gnode)); s=s->val.ptr.tp;s->tag=1;s->val.ptr.tp=NULL; s->val.ptr.hp=h; (4) __ } else {q=(glist)malloc(sizeof(gnode));q->tag=1; q->val.ptr.tp=NULL; (5) ; } } } return(q); } 【上海大学 2002 六、3 (10 分)】 38. 完善下列程序,每小题在 PASCAL 语言(a)和 C 语言(b)中任选一题。下面的程序将 数列 1,2,3,…,n*n,依次按蛇型方式存放在二维数组 A[1..n,1..n]中。即 (示意圖编者略)。 (a)算法的 PASCAL 语言程序描述(编者略):(b)算法的 C 语言程序描述: