黑马程序员技术交流社区
标题:
自己写了一个简单的链表 求改进意见
[打印本页]
作者:
xplcc
时间:
2014-10-2 12:29
标题:
自己写了一个简单的链表 求改进意见
不足之处,请指正
/**
* 创建一个链表结构
*/
class MyList
{
private Cell head;//头部 ,第一个单元
//每个单元设定为一个类
private static class Cell
{
Object data;//单元存储的数据
Cell next;//记录下个节点
}
//获取尾部的单元
private Cell getTail(){
if(head==null)return null;
Cell p = head;
//循环得到最后一个单元
for(;;){
if(p.next==null) break;
p = p.next;
}
return p;
}
//增加功能
public void add(Object data){
//创建一个新的单元
Cell p = new Cell();
//保存数据
p.data = data;
//将该单元挂到最后一个单元的尾部
if(head == null){
head = p;
}else{
Cell q = getTail();
q.next = p;
}
}
//获取链表长度
public int size(){
int count = 0;
Cell p = head;
for(;;){
if(p==null) break;
p = p.next;
count++;
}
return count;
}
//获取指定位置数据
public Object get(int index){
return getCell(index).data;
}
//获取指定位置的单元
private Cell getCell(int index){
Cell p = head;
if(index>=size() || index<0)
throw new ArrayIndexOutOfBoundsException();//角标越界
for(int i=0;i<index;i++){
p = p.next;
}
return p;
}
//删除
public void remove(int index){
if(index==0){
head = head.next;
}else{
//获取删除单元的上一个单元
Cell p1 = getCell(index-1);
//获取当前要删除的单元
Cell p2 = getCell(index);
p1.next = p2.next;
}
}
//重写toString方法
public String toString(){
StringBuffer sb = new StringBuffer("[");
Cell p = head;
for(;;){
if(p==null)break;
sb.append(p.data);
p = p.next;
if(p!=null)sb.append(",");
}
sb.append("]");
return sb.toString();
}
public static void main(String[] args){
MyList ml = new MyList();
ml.add("java01");
ml.add("java02");
ml.add("java03");
ml.add(345);
//ml.add(new Person("青山", 23));
//ml.add(new Person("巴赫", 34));
System.out.println("Mylist:" + ml.toString() + "长度:" + ml.size());
for(int i = 0;i<ml.size();i++){
System.out.println("第" + (i+1) + "元素:" + ml.get(i));
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2