求数据结构答案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求数据结构答案相关的知识,希望对你有一定的参考价值。

四、算法设计与编程
1、试分别以顺序表和单链表作存储结构,各写一个实现线性表的就地(即使用尽可能少的附加空间)逆置的算法,在原表的存储空间内将线性表(a1,a2,.. .,an)逆置为(an,.. .,a2,a1)。
2、单链表可用于表示一元多项式,请用C语言完成:
(1)给出此单链表结点的存储结构描述。
(2)设一元多项式An和Bn分别存储在带头结点的单链表la和lb中且各项按指数由大到小排列。给出算法完成计算:Cn=An+Bn,并将结果存储在带头结点的单链表lc中。
3、已知Q是一个非空队列,S是一个空栈。仅用队列和栈的ADT函数和少量工作变量,编写一个算法,将队列Q中的所有元素逆置(6分)。
栈的ADT函数有:
makeEmpty(s:stack);置空栈
push(s:stack; value:datatype);新元素value进栈
pop(s:stack):datatype;出栈,返回栈顶值
isEmpty(s:stack):boolean;判栈空否
队列的ADT函数有:
enqueue(q:queue;value:datatype);元素value进队
deQueue(q:queue):datatype;出队列,返回队头值
isEmpty(q:queue):boolean;判队列空否
4、串的堆分配存储结构如下:
typedef struct
char *ch;
int len;
HSTRING;
编写串复制的算法StringCopy(HSTRING *ss, HSTRING *dd),将串ss中的各个字符复制到串dd中。
5、设线性链表A的结点数据为整数,应用Pascal或C语言编写一段完整的程序,完成把线性表A分拆成B、C两个链表的过程,使得A中大于0的结点放在B中,小于0的结点放在C中。(注:链表都要求带有头结点,头结点外不能生成新的结点)(要求:给出变量的类型说明)
6、下二叉树采用二叉链表作为存储结构,完成:
(1)画出此二叉树的二叉链表存储结构示意图,给出二叉链表存储结构结点的C语言描述。
(2)给出输出其层序序列的遍历算法。

7、已知二叉树采用二叉链式存储,编写递归算法计算二叉树的高度。
8、下列有向图采用邻接表作为存储结构,完成:

(1)画出此有向图的邻接表存储结构示意图;给出邻接表存储结构结点的C语言描述;
(2)假设有向图已经按邻接表的方式存储中,给出求各顶点出度的算法。
9、写出将一个无向图的邻接矩阵转换成邻接表的算法。

参考技术A 我先回答你的第7题吧(呵呵,有时间的话,慢慢来,要完整的源程序,我再发给你)
typedef struct BNode
ElemType elem;/*ElemType为用户自定义类型*/
struct BNode *lchild;
struct BNode *rchild;
BTNode,*BTree;/*树的链式存储结构*/
int TreeHeight(BTree T)
if(!T) return 0;/*树空,则返回0,递归终止条件*/
else
return (TreeHeight(T->lchild))>(TreeHeight(T->rchild))?

(TreeHeight(T->lchild)+1):(TreeHeight(T->rchild)+1);/*比较左右子树,并返回其

中的高者*/

参考技术B A
C

求数据挖掘考试题

马上要考试了,想找一些数据挖掘的试题来做做,苦于网络资源少,顾求各位大神帮帮忙,发点考试题给我,主要包括数据挖掘基础知识、数据挖掘标准过程、关联规则、分类树、数据抽取、神经网络等内容。我的邮箱632292270@qq.com

参考技术A 1. 什么是关联分析
关联分析是数据挖掘领域常用的一类算法,主要用于发现隐藏在大型数据集中有意义的联系。
举一个大家最耳熟能详的例子,就是尿布和啤酒,表示成关联规则的形式就是{尿壶} ——> {啤酒}。这就是使用关联分析方法所得到的结果,而关联分析所得到的结果,我们可以用关联规则 或者 频繁项集的形式表示。
在进行关联分析时,我们常常会遇到这样两个问题:
A. 从大型数据集中发现模式一般来说需要在计算上付出巨大的代价,甚至往往是impossble的,我们往往采用置信度和支持度的剪枝来解决这个问题。
B. 所发现的某些模式可能是虚假的,这个我们需要采用一些关联规则的评估来解决这个问题。
2. 基本概念
A. 项集:在关联分析中,包含0个或者多个的项的集合称为 项集。 如果一个项集包含k个项,那么就称为k-项集。比如{牛奶,咖啡}则称为2项集。
B. 支持度: 支持度用来确定给定数据集的频繁程度,即给定数据集在所有的数据集中出现的频率,例如s(X -> Y) = P(X,Y) / N
C. 置信度: 置信度则是用来确定Y在包含X的事务中出现的频繁程度,即 c(X -> Y) = P(X,Y) / P(X)
3. 关联分析算法的基本原理
支持度和置信度的意义在于,支持度是一个重要的度量,如果支持度很低,代表这个规则其实只是偶然出现,基本没有意义。因此,支持度通常用来删除那些无意义的规则。而置信度则是通过规则进行推理具有可靠性。用c(X->Y)来说,只有置信度越高,Y出现在包含X的事务中的概率才越大,否则这个规则也没有意义。
通常我们在做关联规则发现的时候都会设定支持度和置信度阈值 minsup 和minconf , 而关联规则发现则是发现那些支持度大于等于minsup 并且置信度大于 minconf的所有规则。所以,提高关联分析算法效率最简单的办法则是提高支持度和置信度的阈值。
所以,通过上面的概念,我们可以很自然地想到,关联分析的基本算法:
A. 找到满足最小支持度阈值的所有项集,我们称之为频繁项集。(例如频繁二项集,频繁三项集)
B. 从频繁项集中找到满足最小置信度的所有规则。
4. 关联分析算法的评估
A. 兴趣度的客观度量
首先,我们来考虑一下支持度-置信度框架的局限性。
首先是支持度,举例来说,在图书市场中,文学类书籍的数量远大于物理类书籍,那么物理类书籍的规则支持度就会很低,这样就导致很多物理类书籍的关联规则都被过滤掉了。
接下来是置信度,举例来说,我们对1000人做度量,发现有200人喜欢喝茶,其中有150人喜欢喝咖啡,50人不喜欢,那么我们通过置信度计算发现c(喝茶 -> 喝咖啡)这个的置信度非常高,我们于是可以推算出喜欢喝茶的人都喜欢喝咖啡。但是其实我们看接下来的调查,另外不喜欢喝茶的800人中,有650人喜欢喝咖啡。 综上所述,我们可以发现,其实喝茶和喝咖啡其实是两个独立事件。所以我们可以概括一下,置信度的缺点,就是置信度度量忽略了规则后件中项集的支持度。
(A) 为了解决这个问题,我们引入一个度量,称为提升度(lift),来计算置信度和规则后件项集支持度的比率:
lift(A->B) = c(A->B) / s(B)
那么对于二元项集来说,我们可以做这样一个变换:
lift(X->Y) = c(X->Y) / s(Y) = ( p(X,Y) / p(X) ) / p(Y) = p(X,Y) / p(X)p(Y)
那么这里,我们则可以把lift(X->Y)称为兴趣因子,表示为I(A,B)
通过概率学知识我们可以知道,如果X事件和Y事件相互独立(或者我们称之为满足事件独立性假设),那么p(X,Y) = p(X) * p(Y),那么我们则可以这样来表示兴趣因子的度量:
当I(A,B) = 1时,我们称A和B是相互独立的,当I(A,B) < 1时,我们称A和B是负相关的,否则我们称A和B是正相关的。
但是从这个简陋的计算模型,我们就可以很轻易地感觉出单纯用兴趣因子来做关联度度量的不靠谱。例子特别容易找了。
(B) 对应兴趣因子,还有另外一种相关分析,IS度量等各种兴趣度客观度量方式。追问

额 我想要考试题那种形式的、、

以上是关于求数据结构答案的主要内容,如果未能解决你的问题,请参考以下文章

求以下试题(数据结构)的详细答案~谢谢啦

oracle数据库题,求答案

几道sql题求答案

数据结构之图:求所有节点之间的最短路径,用啥算法时间复杂度小?求答案与解释

求数据结构(用面向对象方法与C++语言描述)第二版 殷人昆主编 课后答案

小妹急求数据结构习题的一些答案 请高手指教!!