class GenericLink<T>{
public Entry head;//定义头结点
class Entry{
private T data;//数据
private Entry next;
public Entry(){//初始化结点
data = null;
next = null;
}
public Entry(T val){
data = val;
next = null;
}
}
GenericLink(){
this.head = new Entry();//初始化头结点
}
public void headpush(T data){//头插
Entry entry = new Entry(data);
entry.next = head.next;
head.next = entry;
}
public void tailpush(T data){//尾插
Entry entry = new Entry(data);
Entry var = head;
while(var.next != null){
var = var.next;
}
var.next = entry;
entry.next = null;
}
public int getLength(){//获取长度
Entry var = head;
int length = 0;
while(var != null){
length++;
var = var.next;
}
return length;
}
public void pospush(int pos,T data){//指定位置插入
if(pos < 0 || pos > getLength()){
return;
}
Entry entry = new Entry(data);
Entry var = head;
for(int i = 0;i <= pos-1;i++){
var = var.next;
}
entry.next = var.next;
var.next = entry;
}
public void pop(T data){//删除
Entry entry = head;//相当于一个前驱
Entry var = entry.next;
while(var != null){
if(var.data == data){
entry.next = var.next;
break;
}
entry = entry.next;
var = entry.next;
}
}
public void show(){
Entry tmp;
tmp = head;
//遍历打印链表
while(tmp.next != null){
System.out.println("data :"+tmp.next.data);
tmp = tmp.next;
}
}
}
public class Test8 {
public static void main(String[] args) {
GenericLink<Integer> l=new GenericLink<Integer>();
l.headpush(10);
l.headpush(34);
l.headpush(43);
l.tailpush(112);
l.tailpush(768);
l.pospush(2,23);
l.show();
l.pop(34);
System.out.println(l.getLength());
}
}
String类型的