《数据结构Java版》线性表之单链表的建立及操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构Java》线性表之单链表的建立及操作
package sjjg3;
//单链表结点类,T指定结点的元素类型
public class Node
public T data;//数据域,存储数据元素
public Node
public Node(T data,Node
this.data=data;//T对象引用赋值
this.next=next;//Node
}
public Node() {
this(null, null);
}
public String toString() {//返回结点数据域的描述字符串
return this.data.toString();
}
}
package sjjg3;
//单链表类,实现ADT List
public class SinglyList
public Node
//(1)构造方法
public SinglyList() {//构造空单链表
this.head=new Node
public SinglyList(T[] values) {//构造单链表,由values数组提供元素this();//创建空单链表,只有头结点
Node
for(int i=0;i
rear=rear.next;//rear指向新的链尾结点
}
}
public boolean isEmpty() {//判断单链表是否空,O(1)
return this.head.next==null;
}
//(2)存取
public T get(int i) {//返回第i个元素,0<=i<表长度。若i越界,则返回null。O(n)
Node
for(int j=0;p!=null && j
return(i>=0 && p!=null)?p.data:null;//若p指向第i个结点,返回其元素值}
public void set(int i,T x) {//设置第i个元素为x,0<=i<表长度,x!=null。
}
public int size() {//返回单链表长度,O(n)。
Node
int count=0;
while(p!=null) {
count++;
p=p.next;
}
return count;
}
//返回单链表所有元素的描述字符串,形式“(,)”。覆盖Object类的toString()方法,O(n)
public String toString() {
String str=this.getClass().getName()+"(";//返回类名
for(Node
str+=p.data.toString();
if(p.next!=null)
str+=",";//不是最后一个结点时,加分隔符
}
return str+")";//空表返回()
}
//(3)插入
//插入x作为第i个元素,x!=null,返回插入结点
//对序号i采取容错措施,若i<0,则插入x在最前;若i>n,则插入x在最后。O(n) public Node
if(x==null)
throw new NullPointerException("x==null");//抛出空对象异常Node
for(int j=0;front.next!=null && j
front=front.next;
front.next=new Node
return front.next;//返回插入结点
}
public Node
//调用insert(i,x),用整数最大值指定插入在最后,遍历一次,i必须容错
return insert(Integer.MAX_VALUE,x);
}
//(4)删除
public T remove(int i) {//删除第i个元素,0<=i