数据结构的问题。帮帮我吧

1.设有数据结构(D,R),其中D={d1,d2,d3,d4},R={r},r={(d1,d2),(d2,d3),(d3,d4)}.试按图论中的画法惯例画出其逻辑结构图
2.试仿照三元组的抽象数据类型分别写出抽象数据类别复数和有理数的
定义(有理数是其分子,分母均为自然数且分母不为零的分数)。

第1个回答  2008-03-10
1线性结构d1-d2-d3-d4
2复数定义 ADT Complex {

数据对象:D={<e1,e2> | e1,e2∈R (R为实数集合) }

数据关系:R={ <e1,e2> ,e1是复数的实部,e2是复数的虚部,即:e1+j e2 }
基本操作:
InitComplex(&T,v1,v2)
操作结果:构造复数T,元素e1,e2分别被赋以参数v1,v2的值
DestroyComplex(&T)
初始条件:复数T已存在
操作结果:复数T被销毁
GetComplex(T,i,&e)
初始条件:复数T已存在, i∈{1,2}
操作结果:用e返回复数T的实部或虚部,i=1返回实部, i=2返回虚部
PutComplex(T,i,e)
初始条件:复数T已存在, i∈{1,2}
操作结果:改变复数T实部或虚部为e,i=1改变实部, i=2改变虚部
AddComplex(T1,T2,&T3)
初始条件:复数T1,T2已存在
操作结果:复数T1,T2相加,结果存入复数T3
SubComplex(&T1,T2,&T3)
初始条件:复数T1,T2已存在
操作结果:复数T1,T2相减,结果存入复数T3
MulComplex(&T1,T2,&T3)
初始条件:复数T1,T2已存在
操作结果:复数T1,T2相乘,结果存入复数T3
DivComplex(&T1,T2,&T3)
初始条件:复数T1,T2已存在
操作结果:复数T1,T2相除,结果存入复数T3

} ADT Complex

有理数ADT定义:

ADT Rational_Num {

数据对象:D={<e1,e2> | e1,e2∈I (I为整数集合) }

数据关系:R={ <e1,e2> ,e1是有理数的分子,e2是有理数的分母,且e2≠0,即: }

基本操作:
InitRational_Num(&T,v1,v2)
操作结果:构造有理数T,元素e1,e2分别被赋以参数v1,v2的值
DestroyRational_Num(&T)
初始条件:有理数T已存在
操作结果:有理数T被销毁
GetRational_Num(T,i,&e)
初始条件:有理数T已存在, i∈{1,2}
操作结果:用e返回有理数T的分子或分母,i=1返回分子, i=2返回分母
PutRational_Num(T,i,e)
初始条件:有理数T已存在, i∈{1,2}
操作结果:改变有理数T的分子或分母为e,i=1改变分子, i=2改变分母
AddRational_Num(T1,T2,&T3)
初始条件:有理数T1,T2已存在
操作结果:有理数T1,T2相加,结果存入有理数T3
SubRational_Num(&T1,T2,&T3)
初始条件:有理数T1,T2已存在
操作结果:有理数T1,T2相减,结果存入有理数T3
MulRational_Num(&T1,T2,&T3)
初始条件:有理数T1,T2已存在
操作结果:有理数T1,T2相乘,结果存入有理数T3
DivRational_Num(&T1,T2,&T3)
初始条件:有理数T1,T2已存在
操作结果:有理数T1,T2相除,结果存入有理数T3
} ADT Rational_Num本回答被提问者采纳

数据结构相关的问题
第一题:由分枝数,有2D+30+1(树根)=N;D为双分枝结点,N为总结点数 由数结点数有,50+30+D=N。解上面两个方程可得N=129 第二题,当树只有左子树时 第三题,小于等于 第四题,n+n^2约等于n^2。后面的乘不能忽略.

一道数据结构问题
首先,我的理解,题目意思就是把等于 X 的数据移动到数组的前面 因为没有限制,所以难度不大 可以这样做:1 新建一个数组B 2 历遍数组A,找到数组A中值等于X的数,把对应的数组下标存到B中(有点绕) (感觉你是个刚学编程的,复杂度什么的我就不说了哈) 。解释下,比如 A[ (B[c])...

数据结构小问题
给的东西还是有点不够完整,但是大概意思能出来,这个i(i-1)\/2+j-1 意思就是:这里对称矩阵的存储方式,采用只存储矩阵的下三角中的数据,也就是矩阵中n*n个元素,只存储n(n-1)\/2-1个元素到存储区。对于下三角存储的K编号方式如下:K0 K1 K2 K3 K4 K5 K6 K7 K8 K9 \/\/其...

数据结构的编程题,关于单链表。
1、该单链表已经是递增有序的了,那么只需在遍历这个单链表的过程中,将e与遍历到的这个节点、这个节点的下一个节点的值相比较,如果e的值大于当前节点,且e小于等于当前节点下一节点,那么将e插入到当前节点后 2、若循环起始节点为a节点,其下一节点a->next=b;则对a与b进行原地转置首先需要将b...

数据结构的小问题 p->prior->next=p->next和p->next->prior=p->prior...
p->next是指结点a[i+1]的存储地址 第一条语句的含义是将a[i-1]的next指针指向a[i+1]存储地址 第二条语句:p->next->prior是指结点a[i+1]的prior指针域 p->priot是指结点a[i-1]的存储地址 第二条语句的含义是将a[i+1]的prior指针指向a[i-1]的存储地址 最后结果:a[i-1]的指针...

数据结构 指针的问题
双向链表的结点含有两个指针域,一个指向上一个结点,一个指向下一个结点,支持双向遍历。根据题意,要把q指向的结点B插到p指向的节点A的后边。画出每一步图解如下,共分四步,图中箭头上的数字代表第几步:‍注:p->rlink ->llink 可理解为p指向节点A的右边节点的左指针 ...

本人数据结构很是头疼 ,谁能帮我解释一下代码的含义吗??万分紧急,,谢...
只是解释它的含义,1.定义栈的结构,使其有两个域:数据域和指针域,数据域存放数据,指针域存放下一个结点的地址2.初始化,就是使L为空3.入栈,将数据X压入栈内,暂时先存放在栈中,数据在主函数中输入4.出栈,将数据X压出栈外,在主函数中输出 ...

数据结构共享栈问题,就是从中间进栈,两边封住的那种。求高手帮我调试...
指出你的两个语法问题吧 1、结构体变量不是这样初始化的 Stack p1;p1.top[0]=-1;p1.top[1]=maxsize+1;得改成这样:Stack p1 = {-1,maxsize+1};2、int print(Stack p)函数,你的代码不是每个出口都有返回值的 至于逻辑上是否有啥错误……没看 我做任务来的 ...

数据结构 简答题
看一下就明白了吧。再加一些解答。第一题,先序遍历为ABDFGCEH,第二题,带全路径长度为3*3+2*3+5*2+7*2+8*2=55,约定左分支表示字符0,右分支表示字符1,哈夫曼编码为:元素3:000 元素2:001 元素5:01 元素7:10 元素8:11 上面是我的答案,希望能帮助到你。

这是数据结构方面的问题,希望帮我解决
T(N)=3*2N\/64 应该就这么简单

相似回答