数组结构和链接结构的主要特点:
1、数据结构:定长,在内存中保存为连续的内存单元,并且每一个元素所占有的空间相同;特点:检索方便,但是增加、删除吃力;
2、链接结构:在内存中存储的随意,每一个元素都有相应的指针指向下一个元素(单链表),如果是双链表结构,每一个元素还会有另一个指针指向前一个元素;
特点:在进行增加和删除操作时,方便,检索时相对吃力;
以下是单链表的简单实现:
<span style="font-size:14px;">/**
* 简单的单链接实现
*/
public class MyList {
// 链表中的元素
private int data ;
// 保存的下一个元素的指针(引用)
private MyList next ;
/**
* 构造函数
* @param x
*/
public MyList(int x){
data = x ;
}
/**
* 在末端追加
* @param p
*/
public void append(MyList p){
MyList temp = this ;
while(temp.next != null){
temp = temp.next ;
}
temp.next = p ;
}
/**
* 增加元素
* @param p
*/
public void add(MyList p){
p.next = next ;
next = p ;
}
/**
* 删除元素
* @param data
*/
public void delete(int data){
MyList temp = this;
while(temp.next.data!=data){
temp = this.next ;
}
temp.next = temp.next.next ;
}
/**
* 打印内容
*/
public void show(){
StringBuilder sb = new StringBuilder() ;
MyList temp = this ;
while(temp.next!=null){
sb.append(temp.data).append("\t");
temp = temp.next ;
}
sb.append(temp.data);
System.out.println(sb.toString());
}
// 测试
public static void main(String[] args) {
MyList myList = new MyList(10) ;
myList.append(new MyList(30));
myList.append(new MyList(40));
myList.append(new MyList(50));
myList.add(new MyList(20));
myList.show() ;
System.out.println("=============================");
myList.delete(30);
myList.show() ;
}
}
</span>