欢迎来到天天文库
浏览记录
ID:15163718
大小:45.26 KB
页数:11页
时间:2018-08-01
《java数据结构——单链表的操作》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单链表的操作方法一:packagech02;(1)建立结点类Node.javapublicclassNode{publicObjectdata;//存放结点数据值publicNodenext;//存放后继结点//无参构造函数publicNode(){this(null,null);}//只有结点值的构造函数publicNode(Objectdata){this(data,null);}//带有节点值和后继结点的构造函数publicNode(Objectdata,Nodenext){this.data=data;
2、this.next=next;}}(2)建立链表及操作LinkList.javapackagech02;importjava.util.Scanner;publicclassLinkListimplementsIList{publicNodehead;//单链表的头指针//构造函数初始化头结点publicLinkList(){head=newNode();}//构造函数构造长度为n的单链表publicLinkList(intn,booleanOrder)throwsException{this();if(Ord
3、er)create1(n);//头插法顺序建立单链表elsecreate2(n);//尾插法逆序建立单链表}//头插法顺序建立单链表publicvoidcreate1(intn)throwsException{Scannersc=newScanner(System.in);System.out.println("请输入结点的数据(头插法):");for(inti=0;i4、xception{Scannersc=newScanner(System.in);System.out.println("请输入结点的数据(尾插法):");for(inti=0;i5、ngth(){Nodep=head.next;intlength=0;while(p!=null){p=p.next;length++;//返回P不空长度length加1}returnlength;}//读取并返回第i个位置的数据元素publicObjectget(inti)throwsException{Nodep=head.next;intj;//从首结点开始向后查找,直到p指向第i个结点或者p为nullfor(j=0;ji6、7、p==null)8、//i不合法时抛出异常thrownewException("第"+i+"个数据元素不存在");returnp.data;}//插入x作为第i个元素publicvoidinsert(inti,Objectx)throwsException{Nodep=head;intj=-1;//寻找第i个结点的前驱i-1while(p!=null&&ji-19、10、p==null)//i不合法时抛出异常thrownewException("插入位置不合法");Nodes=newNo11、de(x);s.next=p.next;p.next=s;}//删除第i个元素publicvoidremove(inti)throwsException{Nodep=head;intj=-1;while(p!=null&&ji-112、13、p.next==null)thrownewException("删除位置不合法");p.next=p.next.next;}//返回元素x首次出现的位序号publicintindexOf(Objectx){No14、dep=head.next;intj=0;while(p!=null&&!p.data.equals(x)){p=p.next;j++;}if(p!=null)returnj;elsereturn-1;}publicvoiddisplay(){Nodep=head.next;while(p!=null){if(p.next==null)System.out.print(p.data);
4、xception{Scannersc=newScanner(System.in);System.out.println("请输入结点的数据(尾插法):");for(inti=0;i5、ngth(){Nodep=head.next;intlength=0;while(p!=null){p=p.next;length++;//返回P不空长度length加1}returnlength;}//读取并返回第i个位置的数据元素publicObjectget(inti)throwsException{Nodep=head.next;intj;//从首结点开始向后查找,直到p指向第i个结点或者p为nullfor(j=0;ji6、7、p==null)8、//i不合法时抛出异常thrownewException("第"+i+"个数据元素不存在");returnp.data;}//插入x作为第i个元素publicvoidinsert(inti,Objectx)throwsException{Nodep=head;intj=-1;//寻找第i个结点的前驱i-1while(p!=null&&ji-19、10、p==null)//i不合法时抛出异常thrownewException("插入位置不合法");Nodes=newNo11、de(x);s.next=p.next;p.next=s;}//删除第i个元素publicvoidremove(inti)throwsException{Nodep=head;intj=-1;while(p!=null&&ji-112、13、p.next==null)thrownewException("删除位置不合法");p.next=p.next.next;}//返回元素x首次出现的位序号publicintindexOf(Objectx){No14、dep=head.next;intj=0;while(p!=null&&!p.data.equals(x)){p=p.next;j++;}if(p!=null)returnj;elsereturn-1;}publicvoiddisplay(){Nodep=head.next;while(p!=null){if(p.next==null)System.out.print(p.data);
5、ngth(){Nodep=head.next;intlength=0;while(p!=null){p=p.next;length++;//返回P不空长度length加1}returnlength;}//读取并返回第i个位置的数据元素publicObjectget(inti)throwsException{Nodep=head.next;intj;//从首结点开始向后查找,直到p指向第i个结点或者p为nullfor(j=0;ji
6、
7、p==null)
8、//i不合法时抛出异常thrownewException("第"+i+"个数据元素不存在");returnp.data;}//插入x作为第i个元素publicvoidinsert(inti,Objectx)throwsException{Nodep=head;intj=-1;//寻找第i个结点的前驱i-1while(p!=null&&ji-1
9、
10、p==null)//i不合法时抛出异常thrownewException("插入位置不合法");Nodes=newNo
11、de(x);s.next=p.next;p.next=s;}//删除第i个元素publicvoidremove(inti)throwsException{Nodep=head;intj=-1;while(p!=null&&ji-1
12、
13、p.next==null)thrownewException("删除位置不合法");p.next=p.next.next;}//返回元素x首次出现的位序号publicintindexOf(Objectx){No
14、dep=head.next;intj=0;while(p!=null&&!p.data.equals(x)){p=p.next;j++;}if(p!=null)returnj;elsereturn-1;}publicvoiddisplay(){Nodep=head.next;while(p!=null){if(p.next==null)System.out.print(p.data);
此文档下载收益归作者所有