package hehaiwen;
public class DLinkList {
DLinkList prior;
DLinkList next;
Object o;
DLinkList()
{
}
DLinkList(DLinkList prior,DLinkList next,Object o)
{
this.prior=prior;
this.next=next;
this.o=o;
}
}
package hehaiwen;
public class DoubleLinkList {
DLinkList dl;
public DoubleLinkList()
{
dl=new DLinkList();
dl.next=dl;
dl.prior=dl;
}
public void insert(Object o)
{
DLinkList tmp=dl;
while(tmp.next!=dl)
{
tmp=tmp.next;
}
DLinkList s=new DLinkList();
s.o=o;
s.next=tmp.next;
dl.prior=s;
tmp.next=s;
s.prior=tmp;
}
public void insert(int index,Object o)
{
DLinkList tmp=dl;
int j=0;
while(j<index-1)
{
tmp=tmp.next;
++j;
}
DLinkList s=new DLinkList();
s.o=o;
s.next=tmp.next;
tmp.next.prior=s;
tmp.next=s;
s.prior=tmp;
}
public void delete(Object o)
{
int j=0;
DLinkList tmp=dl;
while(tmp.next!=dl)
{
if(tmp.o==o)
{
delete(j);
}
j++;
tmp=tmp.next;
}
}
public int getSize()
{
int j=0;
DLinkList tmp=dl;
while(tmp.next!=dl)
{
j++;
}
return j;
}
public Object find(int index)
{
DLinkList tmp=dl;
int j=0;
while(tmp.next!=dl&&j<index-1)
{
j++;
tmp=tmp.next;
}
return tmp.next.o;
}
public void delete(int index)
{
int j=0;
DLinkList tmp=dl;
while(j<index-1)
{
tmp=tmp.next;
++j;
}
tmp.next=tmp.next.next;
tmp.next.next.prior=tmp;
}
public void display()
{
DLinkList tmp=dl;
while(tmp.next!=dl)
{
System.out.println(tmp.next.o);
tmp=tmp.next;
}
}
public static void main(String args[])
{
DoubleLinkList dl=new DoubleLinkList();
dl.insert(2);
dl.insert(3);
dl.insert(4);
dl.insert(5);
dl.insert(6);
dl.insert(2, 22);
dl.delete(3);
dl.delete(new Integer(2));
dl.display();
System.out.println(dl.find(2));
System.out.println(dl.find(5));
}
}
分享到:
相关推荐
利用双向循环链表来实现对长整数的存储。每个节点只存储四位十进制数字。选择该数据结构来完成长整数的加减运算是因为要对长整数进行运算,需要对长整数进行存储,所以选择用链表对长整数存储,又由于存储的顺序是从...
数据结构课程设计报告基于双向循环链表的通讯录设计
C++实现的带头结点的双向循环链表, 数据结构课设.。
Linux操作系统中通用双向循环链表的实现分析.pdf
用C++和Java实现带头节点的双向循环链表,要继承linearList类,并实现它的所有功能,另外,必须实现双向迭代器。 实现带头节点的双向循环链表,要具有以下的功能: 判断表是否为空,如果为空则返回true,不空返回...
本人自己编写的双向循环链表源码,分享给大家,存在什么问题请指出
单链表实现双向循环链表单向链表存在一个弊端就是,当需要获取某个结点p的前驱时,需要从头指针开始遍历链表,获得“前驱”的执行时间为O(n),为了克服单向链表的这种缺点,可以利用双向链表。在双向链表中有两个...
使用C++实现的双向循环链表,支持定点插入,定点删除,正/逆向输出等功能,欢迎审阅
双向循环链表,队列,代码详细实现,已进行详细备注。
数据结构课程设计实现双向循环链表,我这有详细的课程设计说明书以及答辩ppt,有需要的可以留言哈 ,仅供参考 嘿嘿
一个精简的双向循环链表C语言实现,与大家共享
用单向链表存储航班信息,双向链表存储乘客信息,并可以订票,退票和查询的航班订票系统!
利用了双向循环链表实现了快速排序算法
双向循环链表的程序,包括循环链表的生成,链表结点的插入和删除。
双向循环链表,由包含2个指针的节点组成。 DNode.h,DNode类,继承自Node,增加了一个指针,注意这里继承的类型是protected,只能在本子类中访问父类的protect和public的字段,因为,使用getNextNode方法拿返回值...
给出了双向循环链表的定义、介绍,提供了双向循环链表的建立插入与删除源代码
双向循环链表的基本操作,用C语言编写,包括创建,插入,删除,查找,获值等……
这是使用VC6.0实现的双向循环链表操作的程序,实现了查找元素,查找前驱后继等功能,并在MFC界面下实现了链表操作的具体过程。