java典型数据结构实现与操作Word格式.docx

上传人:b****8 文档编号:22365852 上传时间:2023-02-03 格式:DOCX 页数:17 大小:33.62KB
下载 相关 举报
java典型数据结构实现与操作Word格式.docx_第1页
第1页 / 共17页
java典型数据结构实现与操作Word格式.docx_第2页
第2页 / 共17页
java典型数据结构实现与操作Word格式.docx_第3页
第3页 / 共17页
java典型数据结构实现与操作Word格式.docx_第4页
第4页 / 共17页
java典型数据结构实现与操作Word格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

java典型数据结构实现与操作Word格式.docx

《java典型数据结构实现与操作Word格式.docx》由会员分享,可在线阅读,更多相关《java典型数据结构实现与操作Word格式.docx(17页珍藏版)》请在冰豆网上搜索。

java典型数据结构实现与操作Word格式.docx

类似地,还可以再定义一个测试方法getInfo(Noden),并分别使用LinkedListNode及TreeNode类型对象为实参调用,以验证Java父类与子类之间的多态性机制。

;

4、编写LinkedListTool类,单向链表工具类,在该类中提供一系列static方法,实现单向链表的常规操作功能,包括但不限于:

构造一个测试用新链表、遍历链表、向链表尾部追加节点、删除链表中符合特定条件的节点(例如删除链表中value属性为某一特定值的所有节点)、链表排序、向有序链表中插入一个新节点(仍保持其有序)、有序链表合并(结果仍为有序链表),并对上述方法进行测试。

5、调试运行程序。

六.实验流程图

Permorfer

B

O

K

N

D

E

P

R

S

TreeNode

LinkedListNode

七。

实验代码

1、person

importcom、ambow、Performer;

publicclassPersonimplementsPerformer{

privateStringname;

privateintage;

publicPerson(Stringname,intage){

super();

this、name=name;

this、age=age;

}

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

publicintgetAge(){

returnage;

publicvoidsetAge(intage){

publicvoidshow(){

System、out、println("

个人信息,姓名:

"

+name+"

年龄:

+age);

}

}

2、book

publicclassBookimplementsPerformer{

privateStringid;

privatedoubleprice;

publicBook(Stringid,Stringname,doubleprice){

this、id=id;

this、price=price;

publicStringgetId(){

returnid;

publicvoidsetId(Stringid){

publicdoublegetPrice(){

returnprice;

publicvoidsetPrice(doubleprice){

图书简介,书号:

+id+"

书名:

价格:

+price);

3、Node

publicabstractclassNodeimplementsPerformer{

privateintvalue;

publicNode(){

publicNode(intvalue){

this、value=value;

publicintgetValue(){

returnvalue;

publicvoidsetValue(intvalue){

4、LinkedListNode

publicclassLinkedListNodeextendsNode{

privateLinkedListNodenext;

publicLinkedListNode(){

publicLinkedListNode(intvalue){

super(value);

publicLinkedListNode(LinkedListNodenext){

this、next=next;

publicLinkedListNode(intvalue,LinkedListNodenext){

publicLinkedListNodegetNext(){

returnnext;

publicvoidsetNext(LinkedListNodenext){

单向链表节点,value="

+this、getValue());

5、TreeNode

publicclassTreeNodeextendsNode{

privateTreeNodelchild;

privateTreeNoderchild;

publicTreeNode(){

publicTreeNode(TreeNodelchild,TreeNoderchild){

this、lchild=lchild;

this、rchild=rchild;

publicTreeNode(intvalue,TreeNodelchild,TreeNoderchild){

publicTreeNodegetLchild(){

returnlchild;

publicvoidsetLchild(TreeNodelchild){

publicTreeNodegetRchild(){

returnrchild;

publicvoidsetRchild(TreeNoderchild){

二叉树节点,value="

6、TestPerformer

publicclassTestPerformer{

publicstaticvoidmain(String[]args){

TestPerformertp=newTestPerformer();

tp、introduce(newPerson("

张三"

18));

tp、introduce(newBook("

ISBN1001"

"

Java核心技术"

38、50));

tp、introduce(newLinkedListNode(20,null));

tp、introduce(newTreeNode(33,null,null));

publicvoidintroduce(Performerp){

p、show();

7、LinkedListTool

publicclassLinkedListTool{

//创建一个单向链表

LinkedListNodehead=LinkedListTool、createLinkedList();

//遍历它

LinkedListTool、show(head);

//尾部追加节点

LinkedListNoderesult;

result=LinkedListTool、append(head,newLinkedListNode(99,null));

LinkedListTool、show(result);

head=result;

//删除其中符合特定条件的节点

result=LinkedListTool、delete(head,23);

//排序

result=LinkedListTool、sort(head);

//向有序链表中插入一个新节点

result=LinkedListTool、insert(head,newLinkedListNode(88,null));

//合并两个有序链表

LinkedListNodeh2=LinkedListTool、createLinkedList();

result=LinkedListTool、merge(head,h2);

publicstaticLinkedListNodecreateLinkedList(){

int[]a={44,23,45,23,78,33,121,34,322,-76};

intsize=a、length;

LinkedListNodehead=newLinkedListNode(a[size-1]);

for(inti=size-2;

i>

=0;

i--){

head=newLinkedListNode(a[i],head);

}

returnhead;

publicstaticvoidshow(LinkedListNodehead){

while(head!

=null){

System、out、print(head、getValue());

head=head、getNext();

if(head!

System、out、print("

->

"

);

}

}

\n---------------------------"

publicstaticLinkedListNodeappend(LinkedListNodehead,LinkedListNodenew_p){

if(head==null){

head=new_p;

}else{

//p指向当前头节点(非空的)

LinkedListNodep=head;

//n为p的后继节点(可能为空值)

LinkedListNoden=p、getNext();

while(n!

p=n;

n=p、getNext();

}

p、setNext(new_p);

publicstaticLinkedListNodedelete(LinkedListNodehead,intv){

//删除链表开头的连续多个节点

=null&

&

head、getValue()==v){

//head要保留

if(head!

=null){//删除符合条件中间节点

//p指向当前头节点(非空的)

if(n、getValue()==v){//该删除

p、setNext(n、getNext());

}else{

p=n;

}

}

publicstaticLinkedListNodesort(LinkedListNodehead){

//创建一个空的结果链表

LinkedListNodenhead=null;

//依次取出源链表中的每一个节点,并将之插入到有序的结构链表中,仍然结构链表的有序状态

LinkedListNodec=head;

c、setNext(null);

//将c这个节点插入到有序的链表nhead中

nhead=LinkedListTool、insert(nhead,c);

returnnhead;

//向有序链表中插入一个新节点,并保持其有序状态

publicstaticLinkedListNodeinsert(LinkedListNodehead,LinkedListNoden){

//如果目标链表为空链表

head=n;

}elseif(n、getValue()<

head、getValue()){

n、setNext(head);

head=n;

LinkedListNodep1=head;

LinkedListNodep2=head、getNext();

while(p2!

n、getValue()>

p2、getValue()){

p1=p2;

p2=p2、getNext();

//将n节点插入到p1与p2两个节点之间

p1、setNext(n);

n、setNext(p2);

publicstaticLinkedListNodemerge(LinkedListNodehead1,LinkedListNodehead2){

head2=LinkedListTool、sort(head2);

//依次取出head1链表中的每一个节点,并将之插入到有序的head2链表中,仍然结构链表的有序状态

while(head1!

LinkedListNodec=head1;

head1=head1、getNext();

head2=LinkedListTool、insert(head2,c);

returnhead2;

8、TreeTool

ublicclassTreeTool{

TreeNoderoot=TreeTool、createLinkedList();

TreeTool、list(root);

//构建一颗二叉树

publicstaticTreeNodecreateLinkedList(){

TreeNoden1=newTreeNode(9,null,null);

TreeNoden2=newTreeNode(12,null,null);

TreeNoden3=newTreeNode(49,n1,n2);

TreeNoden4=newTreeNode(54,null,null);

TreeNoden5=newTreeNode(37,n3,n4);

returnn5;

//遍历二叉树(中序遍历)

publicstaticvoidlist(TreeNoderoot){

if(root!

=null){

list(root、getLchild());

System、out、println(root、getValue());

list(root、getRchild());

//遍历二叉树(前序遍历)

publicstaticvoidlist2(TreeNoderoot){

list2(root、getLchild());

list2(root、getRchild());

//遍历二叉树(后序遍历)

publicstaticvoidlist3(TreeNoderoot){

list3(root、getLchild());

list3(root、getRchild());

八.实验效果图

1、输入年份

2、万年历的实现

九.结果分析:

以上程序运行结果不对,缺少符号等,存在的问题及解决方法:

由于在MyEclipse中打代码,很多细节容易忽视,因此在MyEclipse中打完代码,还需运行一次,避免错误的出现。

十.实验体会与总结:

对于代码的学习,我们应注重细节,不能忽视极小的字母与符号的顺序与格式,多敲代码,有益编程。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1