热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JAVA数据结构算法复习

2.1顺序表的插入操作算法publicvoidinsert(inti,Objectx)throwsException{if(curLenlistElem.length)判断顺序表

2.1顺序表的插入操作算法

public void insert(int i,Object x)throws Exception {if(curLen &#61;&#61; listElem.length) //判断顺序表是否已满throw new Exception("顺序表已满"); //抛出异常if(i <0 || i > curlen) //i不合法throw new Exception("插入位置不合法");for(int j &#61; curLen; j > i; j--)listElem[j] &#61; listElem[j-1]; //插入位置及其之后的所有元素后移一位listElem[i] &#61; x; //插入x curLen&#43;&#43;; //表长加一
}

2.2顺序表的删除操作算法

public void remove(int i) throws Exception{if (i<0 || i>curLen - 1) //i不合法 throw new Exception("删除位置不合法"); //抛出异常for (int j &#61; i; j }

2.3顺序表的查找操作算法

public int indexOf(Object x){int j &#61; 0; //j指示顺序表中待比较的元素&#xff0c;其初始值指示顺序表中第0个元素while ( j }

2.6带头结点的单链表上的插入操作算法

public void insert(int i,Object x) throws Exception {Node p &#61; head; //初始化p为头结点&#xff0c;j为计数器int j &#61; -1;while (p !&#61; null && j i - 1 || p &#61;&#61; null) //i不合法throw new Exception("插入位置不合法"); //抛出异常Node s &#61; new Node(x); //生成新结点s.next &#61; p.next; //修改链&#xff0c;使新节点插入单链表中p.next &#61; s;
}

2.8.单链表上的删除操作算法

public void remove(int i) throws Exception {Node p &#61; head; //初始化p指向头结点&#xff0c;j为计数器int j &#61; -1;while(p.next !&#61; null && j i-1 || p.next &#61;&#61; null){throw new Exception("删除位置不合法"); //修改指针&#xff0c;使待删除结点从单链表中脱离出来p.next &#61; p.next.next;
}

3.3求链栈的长度操作算法

public int length() {Node p &#61; top; //初始化&#xff0c;p指向栈顶元素&#xff0c;length为计数器int length &#61; 0; while (p !&#61; null) { //从栈顶元素向后查找&#xff0c;直到p指向空p &#61; p.next; //p指向后继结点&#43;&#43;length; //长度加1}return length;
}

3.4链栈的入栈操作算法

public void push(Object x) {Node p &#61; new Node(x); //构造一个新结点p.next &#61; top;top &#61; p; //新结点成为当前的栈顶结点
}

3.5链栈的出栈操作算法

public Object pop() {if (isEmpty()) {return null;}else {Node p &#61; top; //p指向被删结点&#xff08;栈顶结点&#xff09;top &#61; top.next; //修改链指针&#xff0c;使栈顶结点从链栈中移去return p.data; //返回栈顶结点的数据域的值}
}

3.6循环顺序队列的入队操作算法

public void offer(Object x) throws Exception{if ((rear &#43; 1) % queueElem.length &#61;&#61; front) //队列满throw new Exception("队列已满"); //抛出异常else {queueElem[rear] &#61; x;//x存入rear所指的数组存储位置中&#xff0c;使其成为新的队尾元素rear &#61; (rear &#43; 1) % queueElem.length; //修改队尾指针
}

3.8 链队列的入队操作算法

public void offer(Object x) {Node p &#61; new Node(x); //初始化队列新结点if (front !&#61; null){ //队列非空rear.next &#61; p;rear &#61; p; //改变队尾的位置}elsefront &#61; rear &#61; p;
}

链队列出队poll&#xff08;&#xff09;方法的实现

public Object poll(){if (front !&#61; null) { //队列非空Node p &#61; front; //p指向队首节点front &#61; front.next; //队首节点出列if (p &#61;&#61; rear) //被删除的结点是队尾结点时rear &#61; null;return p.data; //返回队首节点的数据域值}elsereturn null;
}


推荐阅读
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
    本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
author-avatar
玻璃里的鱼鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有