| 贵州学习网—属于你的学习中心 |
|
●试题五 阅读下列程序说明和c程序,将应填入程序中(n)处的字句,写在答卷纸的对应栏内。 【程序说明】 本程序先从文件读入各考生的准考证号(设为整型数)及成绩,并将其存放在一棵检索二叉树上,二叉树结点的健值是成绩,每个结点带一链表,链表结点存放取得该成绩的考生的准考证号。然后,程序按中序遍历检索二叉树,从高分到低分输出结果,使每行输出成绩及其取得成绩的考生的准考证号。 【程序】 #include typedef struct idnode { int id; struct idnode * next; } idnode; typedef struct marknode { int mark; idnode *head; struct marknode *left, *right;"DKGu*rW Bm|8b'(本 文来 源于 我 的学 习网IT认证计算机软件水平考试 htTP://WWw.GZu521.COm]"DKGu*rW Bm|8b' } marknode; char fname [ ]="sp07.dat"; main() { int id, mark; marknode *root=null; file *fp=fopen(fname,"r"); if(!fp) { printf("file%s open error.\n", fname); exit(0); } while (!feop(fp)) { fscanf(fp,"%d%d", &id, &mark); btree(&root, id, mark); } fclose(fp); print(root); } btree(marknod**mpptr, int id, int mark) { idnode *ip; marknode *mp=*mpptr; if (1) { if (mark==p->mark) addidnode ( (2) , id); else if (mark>mp->mark) btree (&mp->left, id, mark); else btree(&mp->right, id, mark); }else { mp=(marknode *) malloc(sizeo (marknode)); mp->mark=mark; mp->left=mp->right=null; (3) addidnode(&mp->head, id); (4) ; } } addidnode(idnode **ipp, int id) {idnode *ip=*ipp; if ( (5) )addidnode ( (6) ), id; else{ ip=(idnode *)malloc(sizeof(idnode)); sp->id=id; ip->next=null; (7) } } print(marknode *mp) { idnode *ip, *ip0; if (mp){ print (mp->left); printf("%6d:\t",mp->mark); ip=mp->head; while(ip){w9e8r=X smRcR [此 资 料 转 贴 于 学 习 网 IT认证计算机软件水平考试HtTp://WwW.GzU521.CoM]w9e8r=X smRcR printf("%6d",ip->id); ip0=ip; ip=ip->next; free(ip0); } printf("\n");printf(mp->right);free(mp); } } |
责任编辑:gzu521