主观

●试题二

阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明2.1】

L为一个带头结点的循环链表。函数deletenode(LinkList L,int c)的功能是删除L中数据域data的值大于c的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。

【函数2.1】

LinkList deletenode(LinkList L,int c)

{

LinkList Lc,p,pre;

pre=L;

p= (1) ;

Lc=(LinkList)malloc(sizeof(ListNode));

Lc->next=Lc;

while(p!=L)

if(p->data>c)

{

 (2) ;

 (3) ;

Lc->next=p;

p=pre->next;

}

else

{

pre=p;

p=pre->next;

}

return Lc;

}

【说明2.2】

递归函数dec_to_k_2(int n,int k)的功能是将十进制正整数n转换成k(2≤k≤9)进制数,并打印。

【函数2.2】

dec_to_k_2(int n,int k)

{∥将十进制正整数n转换成k(2≤k≤9)进制数

if(n!=0)

{

dec_to_k_2( (4) ,k);

printf("%d", (5) );

}

}

参考答案
您可能感兴趣的试题

●试题四

阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

该程序的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后把结果xx输出到文件OUT6.DAT中。

例如:原文:You He Me

I am a student.

结果:Me He You

student a am I

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

【函数】

#include

#include

#include

#include

char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReaaDat(void);

void WriteDat(void);

void StrOL(void)

{

char*pl,*p2,t[80];

int i;

for(i=0;i

{p1=xx[i];t[0]=0;

while(*p1)p1++;

while(p1>=xx[i])

{while(!isalpha(*p1)&&p1!=xx[i])p1--;

p2=p1;

while( (1) )p1--;

if(p1==xx[i])

if(isalpha(*p1))p1--;

else if(!isalpha(*(p1+1)))break;

p2++;

 (2) ;

strcat(t,p1+1);

strcat(t," ");

}

strcpy(xx[i],t);

}

}

void main()

{

if( (3)  ){

printf("数据文件in.dat不能打开!\n\007");

return;

}

StrOL();

writeDat();

getch();

}

int ReadDat(void)

{

FILE*fp;

int i=0;

char*p;

if((fp=fopen("e:\\a\\in.dat","r"))==NULL)return 1;

while(fgets(xx[i],80,fp)!=NULL){

p=strchr(xx[i],′\n′);

if(p)*p=0;

i++;

}

maxline= (4) 

fclose(fp);

return 0;

}

void WriteDat(void)

{

FILE*fp;

int i;

fp=fopen("e:\\a\\out6.dat","w");

for(i=0;i< (5) ;i++){

printf("%s\n",xx[i]);

fprintf(fp,"%s\n",xx[i]);

}

fclose(fp);

}

●试题三

阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明3.1】

假设以带头结点的单循环链表作非递减有序线性表的存储结构。函数deleteklist(LinkList head)的功能是删除表中所有数值相同的多余元素,并释放结点空间。

例如:链表初始元素为:

(7,10,10,21,30,42,42,42,51,70)

经算法操作后变为:

(7,10,21,30,42,51,70)

【函数3.1】

void deleteklist(LinkList head)

{

LinkNode*p,*q;

p=head->next;

while(p!=head)

{

q=p->next;

while( (1) )

{

 (2) ;

free(q);

q=p->next;

}

p=p->next;

}

}

【说明3.2】

已知一棵完全二叉树存放于一个一维数组T[n]中,T[n]中存放的是各结点的值。下面的程序的功能是:从T[0]开始顺序读出各结点的值,建立该二叉树的二叉链表表示。

【函数3.2】

#include

typedef struct node {

int data;

stuct node leftChild,rightchild;

}BintreeNode;

typedef BintreeNode*BinaryTree;

void ConstrncTree(int T[],int n,int i,BintreeNode*&ptr)

{

if(i>=n) (3) ;∥置根指针为空

else

{

ptr=-(BTNode*)malloc(sizeof(BTNode))

ptr->data=T[i];

ConstrucTree(T,n,2*i+1, (4) );

ConstrucTree(T,n, (5) ,ptr->rightchild);

}

}

main(void)

{/*根据顺序存储结构建立二叉链表*/

Binarytree bitree;int n;

printf("please enter the number of node:\n%s";n);

int*A=(int*)malloc(n*sizeof(int));

for(int i=0;i<n;i++)scanf("%d,A+i);/*从键盘输入结点值*/

for(int i=0;i<n;i++)printf("%d",A[i]);

ConstructTree(A,n,0,bitree);

}

¥

订单号:

遇到问题请联系在线客服

订单号:

遇到问题请联系在线客服