目录2001年江南大学招收硕士研究生入学考试试题答案.12002年江南大学招收硕士研究生入学考试试题答案.52003年江南大学招收硕士研究生入学考试试题答案.92004年江南大学招收硕士研究生入学考试试题答案.162007年江南大学招收硕士研究生入学考试试题答案.202008年江南大学招收硕士研究生入学考试试题答案.252011年江南大学招收硕士研究生入学考试试题答案.322012年江南大学招收硕士研究生入学考试试题答案.392013年江南大学招收硕士研究生入学考试试题答案.462014年江南大学招收硕士研究生入学考试试题答案.542015年江南大学招收硕士研究生入学考试试题答案.602016年江南大学招收硕士研究生入学考试试题答案.642017年江南大学招收硕士研究生入学考试试题答案.742018年江南大学招收硕士研究生入学考试试题答案.812019年江南大学招收硕士研究生入学考试试题答案.952020年江南大学招收硕士研究生入学考试试题答案.1102001年江南大学招收硕士研究生入学考试试题答案(考生注意:全部答案必须写在答题纸上否则后果自负!)考试科目代码:833 考试科目:c语言程序设计1、在一个有n个顶点的无向图中,要接通全部顶点至少需要(C)条边。
A、n B、n+1 C、n-1 D、n/2;三、解答题1、编写算法在一个单链表中删除一个值为x的元素int searchanddelete(LNode*C,int x)(LNode*p,*q;两个指针P=C;while(p-next!=NULL)if(p-next-data=x)break;跳出循环else p=p-next;)if(p-next=NULL)return 0;/所有元素都已扫描,均未发现值为x的元素elseq=p-next;p-next=p-next-next;/p-next=q-next;free(q);/return 1;)2、编写计算阿克玛函数的递归算法/2016也考到了这个递归算法#includeint main()int Ack(int m,int n);int a,b,c;printffinput a,b:n);scanf(%d,%d,&a,&b);c=Ack(a,b);printfC(result is%dn”,c);return 0;)int Ack(int m,int n)if(m=0)return n+1;else if(n=0)return Ack(m-l,l);elsereturn Ack(m-1 ,Ack(m,n-1);3、写出折半查找的算法 高分笔记p277#include#define N 10 定义全局变量int main()void Bsearch(int a,int low,int high,int key);int i,L=0,H=N-l,k;int arrN;prin氓“input arr:n,9);scanf(d”,&arr);i=l;while(iai-l)i+;elseprintfplease input a number again:n);)for(i=0;iN;i+)printf(“%5d”,ai);数组排好的printf(n”);k=Bsearch(arr,L,H);if(k=l)printf(ufind the element!nM);elseprintfCdo not find the element!n);return 0;void Bsearch(int a,int low,int high,int key)int mid;while(lowkey)high=mid-l;else low=mid+l;if(lowhigh)return 0;)4、叙述B+树的定义,并设计一个B+树的查找算法。
/*先序遍历法建立二叉树*/#include#includetypedef char Datatype;typedef struct BinTNodeDatatype data;struct BinTNode*lchild,*rchild,*parent;B inTree,*PB inTree;void CreatBinTNode(BinTree*T)/*建立二叉树*/Datatype ch;scanf(n%c&ch);if(ch=)T=NULL;else(T=(PBinTree)malloc(sizeof(BinTree);T-data=ch;CreatBinTNode(T-lchild);CreatBinTNode(T-rchild);void PreOrder(BinTree*root)(if(root!=NULL)(printf(u%c,root-data);PreOrder(root-lchild);PreOrder(root-lchild);void main()B inTree T;printf(按先序遍历的顺序输入二叉树,空的用 补全:n);CreatBinTNode(&T);priiHf(二叉树的先序遍历为:nn);PreOrder(&T);2002年江南大学招收硕士研究生入学考试试题答案(考生注意:全部答案必须写在答题纸上否则后果自负!)考试科目代码:833考试科目:c 语言程序设计1、单链表L,头指针为HL,长为L.length,请用算法在其尾部添加新元素x 和 y。
typedef struct LNodeint data;struct LNode*nextLNode;结构体定义void insert(LNode*&L,int x,int y)(LNode*HL,*q,*p;HL=L;while(HL-next!=NULL)HL=HL-next;沿着单链表扫描到最后一个元素q=(LNode*)malloc(sizeof(LNode);建立节点的操作q-data=x;HL-next=q;HL=q;插入 x,HL 指向 q 的位置P=(LNode*)malloc(sizeof(LNode);p-data=y;HL-next=p;HL=p;插入 y,HL 指向 p 的位置)2、编写一个算法,统计从键盘输入的一个英文句子单词总数#include#include int main()(char string1000;int i,num=0,word=0;char c;gets(string);/得到字符串for(i=0;(c=s tring i)!=,0,;i+)/确定没有到结束符(if(c=f 1)当c 获得的字符为空格的时候,单引号内为空格word=0;else if(word=0)/c不等于空格,且 word为0,记 录,个单词(word=l;num+;)printf(there are%d words in the line.nM,num);return 0;)3、整形数组A100,对任意的i(0i100),满足0Ai100,请编写算法,测试Ai,当为一位数时将它压入栈k,否则压入到w,并统计两个栈的元素个数。
includeint main()int i=l,j=O,k=O,n=O;intA100;int stackklOO,stackwl00;/定义两个栈printffinput number:n);while(i0&Ai100)i+;else printf(iCplease input a number again:n);输入)printffarray A:rT);for(i=1 ;i 100;i+)printf(5d”,ai);n+;/输出if(n=10)printf(n);n=0printf(n);10 个数换行for(i=l;i0&Ai=9)stackkj=Ai;j+;/j 记录栈 k 的元素个数elsestackwk=Ai;k+;/k 记录栈 w 的元素个数)printf(the element of stackk are%d”,j);统计元素printf(the element of stackw are%d,k);return 0;)4、编写算法,求出一棵二叉树的结点总数和叶子结点总数,并输出树的深度值include#include#define MaxSize 100typedef char ElemType;typedef struct node ElemType data;数据元素struct node*Ichild;指向左孩子struct node*rchild;指向右孩子JBTNode;/定义二叉树的结构体/返回data域为x 的结点指针BTNode*FindNode(BTNode*b,ElemType x)/b 是二叉树的名字BTNode*p;if(b=NULL)/b 是空树return NULL;else求二叉树b 的深度int BTNodeDepth(BTNode*b)int lchilddep=O,rchilddep=O;if(b=NULL)return 0;elseIchilddep二 BTNodeD 叩 th(b-lchild);rchilddep=BTNodeDepth(b-rchild);return(lchilddeprchilddep)?(lchilddep+1 ):(rchilddep+1);取左、右深度的最大值求二叉树b 的结点个数int Nodes(BTNode*b)int numl=0,num2=0;if(b=NULL)return 0;空树else if(b-lchild=NULL&b-rchild=NULL)return 1;叶子结点elsenum 1 =Nodes(b-lchild);左子树的结点num2=Nodes(b-rchild);/右子树的结点return(numl+num2+l);总的节点求二叉树b 的叶子结点个数int LeafNodes(BTNode*b)int numl=0,num2=0;if(b二 二 NULL)空树return 0;else if(b-lchild=NULL&b-rchild=NULL)return 1;只有根结点elsenum 1 =LeafNodes(b-lchild);num2=LeafNodes(b-rchild);return(numl+num2);void main()BTNode*bt;CreateBTNode(bt,str);int num=O,leafNum=O,deepth=O;num=Nodes(bt);调用结点数leafNum=LeafNodes(bt);/调用叶子结点数deepth=BTNodeDepth(bt);调用深度printf(二叉树的结点数:%dnnum);printf(二叉树的叶子结点数:%dnM,leafNum);printf(二叉树的深度:%dn,deepth);2003年江南大学招收硕士研究生入学考试试题答案(考生注意:全部答案必须写在答题纸上否则后果自负!)考试科目代码:833 考试科目:c 语言程序设计1、利用循环实现打印一下图形AB*BD*DE*ED*DB*BA#include void main()(char c-A1;int i,j,k;for(i=0;i5;i+)(for(j=0;j4-i;j+)printf();/空格的数目if(i=0)printf(%cn,c);C+;else printf(%c,c);/Afor(k=0;k2*i-l;k+)printf(*);*printf(%cn,c);/EC+;/Fc=c-2;/Dfor(i=0;i4;i+)(for(j=0;j=i;j+)printf();if(i=3)(printf(%cn,c);/Aelse printf(%c,c);for(k=0;k5-2*i;k+)printf(*);printf(%cn,c);c-;2、从键盘输入一串字符串(字符串长度不超过100)和一个字符,先对该字符串排序,升序。
再利用折半查找找出该字符是否存在已经排序的字符串中,则在输。