计算机考研复试上机题库,华科计算机考研复试历年上机题汇总.doc

a7f4a3f590493a1e451dd952a488fd7c.gif 华科计算机考研复试历年上机题汇总.doc

(24页)

0750166b479fea185a177691c1d1d568.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

19.90 积分

华科历年上机题汇总(欢迎补全)代码都很多是我自己写的,不一定正确啊!错了可不负责任的,呵呵~~~仅供参考!==》10年保送生上机试题1、不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。 #include#includeint main(){ char s1[200],s2[100]; int i,len1,len2; scanf("%s %s",s1,s2); for(i=0;i<200;i++){ if(s1[i]=='\0'){ len1=i; break; } } for(i=0;i<100;i++){ if(s2[i]=='\0'){ len2=i; break; } } for(i=len1;inext=NULL; start=L; temp=0; while(idata=temp; p->next=NULL; start->next=p;//插入结点; start=p; temp=0;//重新计数; } i++; } start->next=NULL; return L;}LinkList reverse(LinkList L){//逆转单循环链表; LinkList p,q,r; if(L!=NULL){ p=L->next; L->next=NULL; while(p!=NULL){ q=p; p=p->next; q->next=L; L=q; //printf("**%d\n",L->data); } return L; } return NULL;}void display(LinkList L){//打印输出单链表; LinkList p; printf("%d ",L->data); p=L->next; while(p!=NULL){ printf("%d ",p->data); p=p->next; } printf("\n");}LinkList add_LNumber(LinkList L1,LinkList L2){//2大数相加,单链表实现; LinkList L,p,q,head,r; int c;//进位; int temp; L=(LinkList)malloc(sizeof(LNode)); head=(LinkList)malloc(sizeof(LNode)); head->next=NULL; L=head; p=L1; q=L2; c=0; while(p!=NULL&&q!=NULL){ r=(LinkList)malloc(sizeof(LNode)); temp=p->data+q->data+c; r->data=temp%10000; //printf("***%d\n",r->data); r->next=NULL; c=temp/10000; head->next=r; head=r; p=p->next; q=q->next; } while(p!=NULL){//L1剩余部分非空; r=(LinkList)malloc(sizeof(LNode)); temp=p->data+c; r->data=temp%10000; r->next=NULL; c=temp/10000; head->next=r; head=r; p=p->next; } while(q!=NULL){//L2剩余部分非空; r=(LinkList)ma。省略部分。" ");//输出中间的字符串; } for(j=i;j>=0;j--){ printf("%c",'A'+j); } printf("\n"); } getchar();//接受回车符; }}2。求最长的子序列和。 比如1+3-2,结果是4; 1+3-2+5,结果是7; -1-2-3,结果是-1. 另外要求运行时间不超过1s,就是要求算法的复杂度要好(25分)3。已知二叉树的前序和中序序列,要求写出后序序列。(40分) 如果给的前序和中序序列是错误的,就要输出"NO ANSWER!" #include#include#includetypedef struct node{ char data; struct node *lchild,*rchild;}BTNode,*BTree;BTree createBTree(char *pre,int st1,int en1,char *in,int st2,int en2){ BTree boot; boot=(BTree)malloc(sizeof(BTNode)); int temp; temp=st2; int len_left;//左子树长度; //printf("***\n"); if((en2-st2)!=(en1-st1)){ printf("No Answer!\n");//不能构成一棵树; exit(0); } if(en1-st1<0||en2-st2<0){ boot=NULL; return boot; } while(tempen2){//注意:没有等号! printf("No Answer!\n");//不能构成一棵树; exit(0); } boot->data=pre[st1]; len_left=temp-st2; boot->lchild=createBTree(pre,st1+1,st1+len_left,in,st2,temp-1);//构造左子树; boot->rchild=createBTree(pre,st1+len_left+1,en1,in,temp+1,en2);//构造左子树; return boot;}void display(BTree T){//后序遍历二叉树; if(T!=NULL){ display(T->lchild); display(T->rchild); printf("%c",T->data); free(T);//释放结点指针; }}int main(){ char pre[1000],in[1000]; int len1,len2; BTree T; T=(BTree)malloc(sizeof(BTNode)); while(scanf("%s%s",pre,in)!=EOF){ len1=strlen(pre); len2=strlen(in); T=createBTree(pre,0,len1-1,in,0,len2-1); display(T); printf("\n"); } //system("pause");}//1 生成一个长度为21的数组,依次存入1到21 //2 建立一个长度为21的单向链表,将上述数组中的数字依次存入链表每个结点中 //3 将上述链表变为单向封闭(循环)链表 //4 从头结点开始数,将第17个结点删除,将它的下一个结点作为新的头结点 //5 重复上述过程,直到该链表中只剩一个结点,显示该结点中存入的数字 #include#includetypedef struct node{ int data; struct node *next;}LNode,*LinkList;LinkList createList(int a[],int len){//创建单链表; LinkList L,p,r; int i; if(lendata=a[0]; p=L; for(i=1;idata=a[i]; p->next=r; p=r; } p->next=NULL;//表尾; return L;}LinkList changeList(LinkList L){//把单链表变成单循环链表; LinkList p; p=L; while(p->next!=NULL){ p=p->next;//p移至表尾; } p->next=L; return L;}LinkList deleteLNode(LinkList L){//从链表中删除结点; LinkList p,r; int count=1; p=L; while(countnext;//p移至第17个结点; count++; } r->next=p->next; free(p); return r->next;//新的头结点;}void display(LinkList L){//输出单链表; if(L!=NULL){ LinkList p; p=L; while(p!=NULL){ printf("%d ",p->data); p=p->next; } }}int main(){ int a[21],i; LinkList L,p; for(i=0;inext!=L){ L=deleteLNode(L); } printf("链表中最后剩下的结点是:%d\n",L->data); //display(L);} 关 键 词: 复试 历年 上机 汇总 考研 计算机

4d91c43bfc72ca913299809b07b4968f.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值