2014年海南省学习数据库基础.doc

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2014年海南省学习数据库基础

2014年海南省学习数据库基础 导读:就爱阅读网友为您分享以下“2014年海南省学习数据库基础”资讯,希望对您有所帮助,感谢您对92的支持! 1、本题要求建立有序的循环链表。从头到尾扫描数组A,取出A[i](0lt;=ilt;n),然后到链表中去查找值为A[i]的结点,若查找失败,则插入。 LinkedList creat(ElemType A[],int n) //由含n个数据的数组A生成循环链表,要求链表有序并且无值重复结点 {LinkedList h; h=(LinkedList)malloc(sizeof(LNode));//申请结点 h-gt;next=h; //形成空循环链表 for(i=0;ilt;n;i++) {pre=h; p=h-gt;next; while(p!=h p-gt;datalt;A[i]) {pre=p; p=p-gt;next;} //查找A[i]的插入位置 if(p==h || p-gt;data!=A[i]) //重复数据不再输入 {s=(LinkedList)malloc(sizeof(LNode)); s-gt;data=A[i]; pre-gt;next=s; s-gt;next=p;//将结点s链入链表中 } }//for return(h); }算法结束 2、设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左,右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N0。N2、NL、NR、N0都是全局量,且在调用count(t)之前都置为0. typedef struct node {int data; struct node *lchild,*rchild;}node; int N2,NL,NR,N0; void count(node *t) {if (t-gt;lchild!=NULL) if (1)___ N2++; else NL++; else if (2)___ NR++; else (3)__ ; if(t-gt;lchild!=NULL)(4)____; if (t-gt;rchild!=NULL) (5)____; } 26.树的先序非递归算法。 void example(b) btree *b; { btree *stack[20], *p; int top; if (b!=null) { top=1; stack[top]=b; while (topgt;0) { p=stack[top]; top--; printf(“%d”,p-gt;data); if (p-gt;rchild!=null) {(1)___; (2)___; } if (p-gt;lchild!=null) (3)___; (4)__; }}}} 3、若第n件物品能放入背包,则问题变为能否再从n-1件物品中选出若干件放入背包(这时背包可放入物品的重量变为s-w[n])。若第n件物品不能放入背包,则考虑从n-1件物品选若干件放入背包(这时背包可放入物品仍为s)。若最终s=0,则有一解;否则,若slt;0或虽然sgt;0但物品数nlt;1,则无解。 (1)s-w[n],n-1 //Knap(s-w[n],n-1)=true (2)s,n-1 // Knap←Knap(s,n-1) 4、我们用l代表最长平台的长度,用k指示最长平台在数组b中的起始位置(下标)。用j记住局部平台的起始位置,用i指示扫描b数组的下标,i从0开始,依次和后续元素比较,若局部平台长度(i-j)大于l时,则修改最长平台的长度k(l=i-j)和其在b中的起始位置(k=j),直到b数组结束,l即为所求。 void Platform (int b[ ], int N) //求具有N个元素的整型数组b中最长平台的长度。 {l=1;k=0;j=0;i=0; while(ilt;n-1) {while(ilt;n-1 b[i]==b[i+1]) i++; if(i-j+1gt;l) {l=i-j+1;k=j;} //局部最长平台 i++; j=i; } //新平台起点 printf(“最长平台长度%d,在b数组中起始下标为%d”,l,k); }// Platform 5、设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉排序树并给出构造过程 。 6、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一个单链表,表头指针为head。 二叉树按二叉链表方式存储,链接时

文档评论(0)

raojun00007 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档