java 用链表实现线性表
2011-08-05 22:42
351 查看
packagecom.jzm;
publicclassMyLList<T>{
privateNodefirstNode;
privateintlength;//线性表的长度
privateclassNode{//私有内部类
privateTdata;
privateNodenext;
privateNode(TdataPortion){
data=dataPortion;
next=null;
}//endconstructor
/*privateNode(TdataPortion,NodenextNode){
data=dataPortion;
next=nextNode;
}//endconstructor
*/
}//end-Node
publicMyLList(){
clear();
}
publicbooleanisEmpty(){
returnlength<1?true:false;
}
publicfinalvoidclear(){
firstNode=null;
length=0;
}
privateNodegetNodeAt(intgivenPosition){
assert(!isEmpty())&&(1<=givenPosition)&&(givenPosition<=length);
NodecurrentNode=firstNode;
for(inti=1;i<givenPosition;i++){
currentNode=currentNode.next;
}
assertcurrentNode!=null;
returncurrentNode;
}
publicbooleanadd(TnewEntry){ //在末端加入元素
NodenewNode=newNode(newEntry);
if(isEmpty()){
firstNode=newNode;
}else{
NodelastNode=getNodeAt(length);
lastNode.next=newNode;//使最后一个结点引用指向新结点
}//end-if
length++;
returntrue;
}//endadd
publicbooleanadd(intnewPosition,TnewEntry){
if((newPosition>=1)&&(newPosition<=length+1)){
NodenewNode=newNode(newEntry);
if(isEmpty()||newPosition==1){//情况一
newNode.next=firstNode;
firstNode=newNode;
}else{
NodenodeBefore=getNodeAt(newPosition-1);
Nodenodeafter=nodeBefore.next;
newNode.next=nodeafter;
nodeBefore.next=newNode;
}//endelse
length++;
returntrue;
}elsereturnfalse;
}//endadd(,,)
publicTgetEntry(intgivenPosition){
Tresult=null;
if(!isEmpty()&&(givenPosition>=1)&&givenPosition<=length){
result=getNodeAt(givenPosition).data;
}
returnresult;
}
publicObjectremove(intgivenPosition){
Objectresult=null;
if(givenPosition<1||givenPosition>length||isEmpty()){
System.out.println("删除的位置不存在或者链表为空");
returnresult;
}elseif(givenPosition!=1){
NodedeleteNode=getNodeAt(givenPosition);
NodeNodebefore=getNodeAt(givenPosition-1);
Nodebefore.next=deleteNode.next;
length--;
returndeleteNode;
}else{
result=firstNode.data;
firstNode=firstNode.next;
length--;
returnresult;
}
}
publicvoiddisplay(){
if(length<1){
System.out.println("链表没数据!");
}else{
NodecurrentNode=firstNode;
for(inti=1;i<=length;i++){
System.out.println("第"+i+"个数据:"+currentNode.data);
currentNode=currentNode.next;
}
}//for
}//enddisplay
}
相关文章推荐
- JAVA实现具有迭代器的线性表(单链表)
- 线性表 及Java实现 顺序表、链表、栈、队列
- 线性表 及Java实现 顺序表、链表、栈、队列
- 大话数据结构(二)——线性表链式存储结构(单链表)的java实现
- Java实现链表,线性表
- 线性表--双链表实现方式 (JAVA)
- java实现链表线性表
- java 链表实现线性表
- 数据结构(二)--- 线性表链表(单链表)java实现方式
- (4) 数据结构与算法 ---- 线性表 及Java实现 顺序表、链表、栈、队列
- Java双向链表的实现
- Java实现-两个链表的交叉
- 数据结构链表(java版)的实现和思考
- 数据结构(三):链表的Java实现
- 链表的基本操作与拓展操作(Java语言实现)
- 单链表的java语言完整实现含添加删除节点
- JAVA实现双向链表
- 【LeetCode-面试算法经典-Java实现】【025-Reverse Nodes in k-Group(单链表中k个结点一组进行反转)】
- java中的线性表的内部实现(ArrayList、LinkedList)
- Java实现单向链表基本功能