java
大话数据结构 java源代码-凯发ag旗舰厅登录网址下载
packagecom.aclie.datastructe4.sqelist;public classmydoublelinklist {private int length =0;//当前长度
private node head;//头结点
private node tail;//当前结点结点
publicmydoublelinklist(){
initlink();
}public voidinitlink(){
head= new node(null);
tail= new node(null);this.head =tail;
length ;
}//获取链表长度
public intgetsize(){returnlength;
}//判断链表是否为空
public booleangetempty(){return getsize()==0;
}//根据索引查找元素 从第一个有效值开始
public node getnode(intindex){
node p;if(index < 0 || index >length ){
system.out.println("参数错误");
}if(index < this.length/2){
p= this.head;for(int i=0; i
p=p.next;
}
}else{
p= this.tail;for(int i= length; i>index;i--){
p=p.prev;
}
}returnp;
}public object getdata(intindex){returngetnode(index).data;
}//在头结点处插入
public booleanaddhead(object e){//前驱引用为null,后继为node
node node = new node(e, null, this.head);//改变头结点的前驱后继
this.head.prev =node;this.head =node;if(tail == null){
tail= this.head;
}
length ;return true;
}//在尾结点插入
public booleanaddtail(object e){if(this.head == null){this.head = new node(e,null,null);this.tail = this.head;
}else{
node node= new node(e,this.tail,null);this.tail.next =node;this.tail =node;
}
length ;return true;
}//在指定位置插入元素
public boolean adddata(intindex,object ele){if(index <0 || index > this.length){
system.out.println("参数错误");
}if(this.head == null){this.addtail(ele);//用尾插法
}else{if(index == 0){
addhead(ele);//用头插法
}else{
node p= this.getnode(index);//要插入处的结点
node n =p.next;
node node= new node(ele,p,n);//要插入的结点
n.prev =node;
p.next=node;
length ;
}
}return true;
}public void removedata(intindex){if(index < 0 || index >length){
system.out.println("参数错误");
}else{
node del= null;if(index == 0){
del= this.head;this.head = this.head.next;this.head.prev = null;
length--;
}else if(index == (length-1)){
node p= this.getnode(index-1);//得到要删除结点的前驱结点
del = p.next;//要删除的结点
p.next =del.next;if(del.next != null){
del.next.prev=p;
}
del.next= null;
del.prev= null;
length--;this.tail.next = null;this.tail.prev =p;this.tail =p;
}else{
node p= this.getnode(index-1);//要删除结点的前驱结点
del = p.next;//要删除的结点
p.next =del.next;if(del.next != null){
del.next.prev=p;
}
del.prev= null;
del.next= null;
length--;
}
}
}//打印所有链表中的元素
public voidprint(){
node current= this.head;while(current != null){
system.out.println(current.data);
current=current.next;
}
}//反向打印链表
public voidreverseprint(){
node current= this.tail;while(current != null){
system.out.println(current.data);
current=current.prev;
}
}public static voidmain(string args[]){
mydoublelinklist linklist= newmydoublelinklist();
linklist.addhead("aaaa");//system.out.println(linklist.getdata(1));
linklist.addtail("bbbb");//system.out.println(linklist.getdata(3));
linklist.adddata(2, "eeee");//linklist.print();
linklist.removedata(2);
linklist.print();
system.out.println(".....");
linklist.reverseprint();
}
}classnode{
node prev;//指针域中前驱
node next;//指针域中后继
object data;//数据域
publicnode(node current){
prev=current;
next=current;
}//双链表前驱后继及数字域
publicnode(object d, node p,node n){this.data =d;this.prev =p;this.next =n;
}publicnode getprev() {returnprev;
}public voidsetprev(node prev) {this.prev =prev;
}publicnode getnext() {returnnext;
}public voidsetnext(node next) {this.next =next;
}
}
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的大话数据结构 java源代码_大话数据结构(八)java程序——双向链表的实现的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇:
- 下一篇: