java数据结构编程题 java数据结构题库及答案_二叉树

《数据结构java版》习题解答.doc

I第0章JAVA程序设计基础1【习01】实验01哥德巴赫猜想。1【习02】实验02杨辉三角形。1【习03】实验03金额的中文大写形式。1【习04】实验04下标和相等的数字方阵。1【习05】实验05找出一个二维数组的鞍点2【习06】实验06复数类。2【习07】实验08图形接口与实现图形接口的类2第1章绪论3【习11】实验11判断数组元素是否已按升序排序。3【习12】实验13用递归算法求两个整数的最大公因数。3第2章线性表5【习21】习25图219的数据结构声明。5【习22】习26如果在遍历单链表时,将PPNEXT语句写成PNEXTP,结果会怎样5【习23】实验22由指定数组中的多个对象构造单链表。5【习24】实验22单链表的查找、包含、删除操作详见821。5【习25】实验22单链表的替换操作。6【习26】实验22首尾相接地连接两条单链表。6【习27】实验22复制单链表。6【习28】实验22单链表构造、复制、比较等操作的递归方法。7【习29】建立按升序排序的单链表(不带头结点)。8【习210】实验26带头结点的循环双链表类,实现线性表接口。10【习211】实验25建立按升序排序的循环双链表。14第3章栈和队列17【习31】习35栈和队列有何异同17【习32】能否将栈声明为继承线性表,入栈方法是ADD0,E,出栈方法是REMOVE0为什么17【习33】能否用一个线性表作为栈的成员变量,入栈方法是ADD0,E,出栈方法是REMOVE0为什么17【习34】能否将队列声明为继承线性表,入队方法是ADDE,出队方法是REMOVE0为什么17第4章串18【习41】实验46找出两个字符串中所有共同的字符。18【习42】习491已知目标串为“ABBABA“、模式串为“ABA“,画出其KMP算法的匹配过程,并给出比较次数。18II【习43】习492已知TARGET“ABABAAB“、PATTERN“AAB“,求模式串的NEXT数组,画出其KMP算法的匹配过程,并给出比较次数。18第5章数组和广义表20【习51】求一个矩阵的转置矩阵。20第6章树和二叉树21【习61】画出3个结点的各种形态的树和二叉树。21【习62】找出分别满足下面条件的所有二叉树。21【习63】输出叶子结点。21【习64】求一棵二叉树的叶子结点个数。22【习65】判断两棵二叉树是否相等。22【习66】复制一棵二叉树。23【习67】二叉树的替换操作。23【习68】后根次序遍历中序线索二叉树。24第7章图25第8章查找26【习81】实验81顺序表的查找、删除、替换、比较操作。26【习82】实验82单链表的全部替换操作。28【习83】实验82单链表的全部删除操作。28【习84】折半查找的递归算法。29【习85】二叉排序树查找的递归算法。29【习86】二叉排序树插入结点的非递归算法。30【习87】判断一棵二叉树是否为二叉排序树。31第9章排序32【习91】判断一个数据序列是否为最小堆序列。32【习92】归并两条排序的单链表。32【习93】说明二叉排序树与堆的差别。34图01下标和相等的数字方阵算法描述1图21PNEXTP将改变结点间的链接关系5图41目标串“ABBABA“和模式串“ABA“的KMP算法模式匹配过程18图42目标串“ABABAAB“和模式串“AAB“的KMP算法模式匹配过程19图613个结点树和二叉树的形态21图62单支二叉树21图92归并两条排序的单链表33III表41模式串“AAB“的NEXT数组191第0章JAVA程序设计基础【习01】实验01哥德巴赫猜想。【习02】实验02杨辉三角形。【习03】实验03金额的中文大写形式。【习04】实验04下标和相等的数字方阵。输出下列方阵(当N4时)。1267或134103581325911491214681215101115167131416采用二维数组实现。二维数组中,每一条斜线上各元素下标和相等,如图01所示。J12673581349121410115160123123I右下三角下标和为N~2N左上三角下标和为0~N1下标和为4下标和为5下标和为6图01下标和相等的数字方阵算法描述程序如下。PUBLICCLASSUPMAT{PUBLICSTATICVOIDMAINSTRINGARGS{INTN4//阶数INTMATNEWINTNNINTK1//K是自然数,递增变化BOOLEANUPTRUE//方向向上FORINTSUM0SUM0IMATISUMIK//K先赋值后自加ELSEFORINTI0ISUMNJMATSUMJJKUPUP}FORINTI0ITABLEI1RETURNFALSERETURNTRUE}PUBLICSTATICBOOLEANISSORTEDCOMPARABLETABLE//判断对象数组是否已按升序排序{//若已排序返回TRUE,否则返回FALSEIFTABLENULLRETURNFALSEFORINTI0I0RETURNFALSERETURNTRUE}【习12】实验13用递归算法求两个整数的最大公因数。PUBLICCLASSGCD{PUBLICSTATICINTGCDINTA,INTB//返回A,B的最大公因数,递归方法{IFB0RETURNAIFATABLE【习22】习26如果在遍历单链表时,将PPNEXT语句写成PNEXTP,结果会怎样使PNEXT指向P结点自己,改变了结点间的链接关系,丢失后继结点,如图21所示。AHEADBCD∧图21PNEXTP将改变结点间的链接关系【习23】实验22由指定数组中的多个对象构造单链表。在SINGLYLINKEDLIST单链表类中,增加构造方法如下。PUBLICSINGLYLINKEDLISTEELEMENT//由指定数组中的多个对象构造单链表{THISHEADNULLIFELEMENTNULLNODEREARTHISHEADINTI1WHILEISEARCHEELEMENT,NODESTART//从单链表结点START开始顺序查找指定对象PUBLICNODESEARCHEELEMENT//若查找到指定对象,则返回结点,否则返回6NULLPUBLICBOOLEANCONTAINEELEMENT//以查找结果判断单链表是否包含指定对象PUBLICBOOLEANREMOVEEELEMENT//移去首次出现的指定对象【习25】实验22单链表的替换操作。在SINGLYLINKEDLIST单链表类中,增加替换操作方法如下。PUBLICBOOLEANREPLACEOBJECTOBJ,EELEMENT//将元素值为OBJ的结点值替换为ELEMENT{//若替换成功返回TRUE,否则返回FALSE,ONIFOBJNULL||ELEMENTNULLRETURNFALSENODEPTHISHEADWHILEPNULL{IFOBJEQUALSPDATA{PDATAELEMENTRETURNTRUE}PPNEXT}RETURNFALSE}【习26】实验22首尾相接地连接两条单链表。在SINGLYLINKEDLIST单链表类中,增加替换操作方法如下。PUBLICVOIDCONCATSINGLYLINKEDLISTLIST//将指定单链表LIST链接在当前单链