随笔分类 - 数据结构 Java
摘要:// 判断链表中是否有环bool IsExitLoop(LinkList *head){ LinkList *pslow = head; LinkList *pfast = head; while(pfast != NULL && pfast->next != NULL) { pslow = pslow->next; // 每次前进一步 pfast = pfast->next->next; // 每次前进二步 if(pslow == pfast) // 两个指针相遇,说明存在环 return true; } return false; // 没...
阅读全文
摘要:一、队列队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。二、双端队列双端队列是只既可以在表的前端进行插入和删除操作,又可以在表的后端进行插入和删除操作。三、ArrayDeque的实现Java中的双端队列是用数组实现的,类的全限名称是java.util.ArrayDeque,该类的声明如下:public class ArrayDeque<E> extends AbstractCollection<E>implements Deque
阅读全文
摘要:在Java中,LinkedList泛型类继承了AbstractSequentialListf泛型类,实现了List、Deque、Colneable和Serializable接口,定义如下:该类的实现使用的是循环链表的结构,我们知道,一个链表的主要标志就是表头,所以一个LinkedList泛型类中一定要有一个头结点,链表的组成元素是结点,所以还需要在该类中定义一个结点的内部类,当然,也可以在外面定义,为了实现更好的封装性,定义成private的内部类是再好不过的了。下面是定义的头结点和内部结点类: private transient Entry<E> header = new Ent
阅读全文
摘要:一、什么是迭代器我们知道,JVM是用C/C++编写的。在百度百科中,迭代器是解释是迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上象迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。二、Java中的迭代器百度百科中解释的迭代器是C++中的迭代器,但是JVM的编写语言是C/C++,在Java中,我们知道要使用迭代器,就需要继承Iterator接口,Iterator接口中有一个iterator()方法,根据
阅读全文
摘要:为了避免与类库中的ArrayList类重复,在这里,使用的类名为ArrayListDemo。在Java中,ArrayList泛型类是继承AbstractList泛型类的,并且实现了List<E>, RandomAccess, Cloneable, java.io.Serializable这些接口。我在这里主要说数据结构,ArrayListDemo并没有继承List<E>, RandomAccess, Cloneable, java.io.Serializable这些结构,是一个独立的类,但是它需要实现Iterable泛型类的接口。ArrayListDemo泛型类实现的细
阅读全文
摘要:一、List接口在Java中,List接口的定义如下:public interface List<E> extends Collection<E> { int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); Object[] toArray(); <T> T[] toArray(T[] a); boolean add(E e); boolean remove(Object o); boolean containsAll(Collec...
阅读全文
浙公网安备 33010602011771号