数组操作

public class MyArray {private int[] array;private int size;public MyArray(int capacity){this.array = new int[capacity];size = 0;}/*** 数组插入元素* @param index  插入的位置* @param element  插入的元素*/public void insert(int index, int element) throws Exception {//判断访问下标是否超出范围if(index<0 || index>size){throw new IndexOutOfBoundsException("超出数组实际元素范围!");}//如果实际元素达到数组容量上线,数组扩容if(size >= array.length){resize();}//从右向左循环,逐个元素向右挪一位。for(int i=size-1; i>=index; i--){array[i+1] = array[i];}//腾出的位置放入新元素array[index] = element;size++;}/*** 数组扩容*/public void resize(){int[] arrayNew = new int[array.length*2];//从旧数组拷贝到新数组System.arraycopy(array, 0, arrayNew, 0, array.length);array = arrayNew;}/*** 数组删除元素* @param index  删除的位置*/public int delete(int index) throws Exception {//判断访问下标是否超出范围if(index<0 || index>=size){throw new IndexOutOfBoundsException("超出数组实际元素范围!");}int deletedElement = array[index];//从左向右循环,逐个元素向左挪一位。for(int i=index; i<size-1; i++){array[i] = array[i+1];}size--;return deletedElement;}/*** 输出数组*/public void output(){for(int i=0; i<size; i++){System.out.println(array[i]);}}public static void main(String[] args) throws Exception {MyArray myArray = new MyArray(4);myArray.insert(0,3);myArray.insert(1,7);myArray.insert(2,9);myArray.insert(3,5);myArray.insert(1,6);myArray.insert(5,8);myArray.delete(3);myArray.output();}
}

链表操作

public class MyLinkedList {//头节点指针private Node head;//尾节点指针private Node last;//链表实际长度private int size;/*** 链表插入元素* @param index  插入位置* @param data  插入元素*/public void insert(int index, int data) throws Exception {if (index<0 || index>size) {throw new IndexOutOfBoundsException("超出链表节点范围!");}Node insertedNode = new Node(data);if(size == 0){//空链表head = insertedNode;last = insertedNode;} else if(index == 0){//插入头部insertedNode.next = head;head = insertedNode;}else if(size == index){//插入尾部last.next = insertedNode;last = insertedNode;}else {//插入中间Node prevNode = get(index-1);insertedNode.next = prevNode.next;prevNode.next = insertedNode;}size++;}/*** 链表删除元素* @param index  删除的位置*/public Node remove(int index) throws Exception {if (index<0 || index>=size) {throw new IndexOutOfBoundsException("超出链表节点范围!");}Node removedNode = null;if(index == 0){//删除头节点removedNode = head;head = head.next;if(size == 1){last = null;}}else if(index == size-1){//删除尾节点Node prevNode = get(index-1);removedNode = prevNode.next;prevNode.next = null;last = prevNode;}else {//删除中间节点Node prevNode = get(index-1);Node nextNode = prevNode.next.next;removedNode = prevNode.next;prevNode.next = nextNode;}size--;return removedNode;}/*** 链表查找元素* @param index  查找的位置*/public Node get(int index) throws Exception {if (index<0 || index>=size) {throw new IndexOutOfBoundsException("超出链表节点范围!");}Node temp = head;for(int i=0; i<index; i++){temp = temp.next;}return temp;}/*** 输出链表*/public void output(){Node temp = head;while (temp!=null) {System.out.println(temp.data);temp = temp.next;}}/*** 链表节点*/private static class Node {int data;Node next;Node(int data) {this.data = data;}}public static void main(String[] args) throws Exception {MyLinkedList myLinkedList = new MyLinkedList();myLinkedList.insert(0,3);myLinkedList.insert(0,4);myLinkedList.insert(2,9);myLinkedList.insert(3,5);myLinkedList.insert(1,6);myLinkedList.remove(0);myLinkedList.output();}
}

队列操作

public class MyQueue {private int[] array;private int front;private int rear;public MyQueue(int capacity){this.array = new int[capacity];}/*** 入队* @param element  入队的元素*/public void enQueue(int element) throws Exception {if((rear+1)%array.length == front){throw new Exception("队列已满!");}array[rear] = element;rear =(rear+1)%array.length;}/*** 出队*/public int deQueue() throws Exception {if(rear == front){throw new Exception("队列已空!");}int deQueueElement = array[front];front =(front+1)%array.length;return deQueueElement;}/*** 输出队列*/public void output(){for(int i=front; i!=rear; i=(i+1)%array.length){System.out.println(array[i]);}}public static void main(String[] args) throws Exception {MyQueue myQueue = new MyQueue(6);myQueue.enQueue(3);myQueue.enQueue(5);myQueue.enQueue(6);myQueue.enQueue(8);myQueue.enQueue(1);myQueue.deQueue();myQueue.deQueue();myQueue.deQueue();myQueue.enQueue(2);myQueue.enQueue(4);myQueue.enQueue(9);myQueue.output();}
}

《漫画算法》源码整理-2 数组 链表 队列相关推荐

  1. [unity3d]recast navigation navmesh 导航网格 寻路算法 源码分析

    recast navigation navmesh导航网格算法源码分析 Author:  林绍川 recast navigation navmesh是unity3d ue4内置的寻路算法 本文为了方便 ...

  2. Learning to Rank中Pointwise关于PRank算法源码实现

    [学习排序] Learning to Rank中Pointwise关于PRank算法源码实现 标签: 学习排序PRankPointwiseLearning to Rank代码实现 2015-01-28 ...

  3. 超像素SLIC算法源码阅读

    超像素SLIC算法源码阅读 超像素SLIC算法源码阅读 SLIC简介 源码阅读 实验结果 其他超像素算法对比 超像素SLIC算法源码阅读 SLIC简介 SLIC的全称Simple Linear Ite ...

  4. Java自动计算迷宫正确路线算法源码

    简介: Java自动计算迷宫正确路线算法源码,首先迷宫需要满足存在开始标识和结束标识与墙标识,然后设置好行数与列数就可以开始计算正确路线了,采用的是为二维数组然后走遍所有路线的方式. 网盘下载地址: ...

  5. 小红书算法sign php,易语言小红书sign算法源码

    易语言小红书sign算法源码 @397951321.版本 2 .子程序 计算sign, 文本型 .参数 请求参数, HashMap类 .局部变量 A, 文本型, , "0" .局部 ...

  6. 海外某音x-gorgon算法原理分析及算法源码公布

    算法源码见附件 分享一个去年逆的一个海外版某音 1474版本 x-gorgon算法,这里简单介绍一下算法原理,首先malloc出来一个0x1A大小的空间,然后截取用户传入的byte数组中的参数,截取开 ...

  7. 基于新唐M0的XXTEA加密解密算法源码

    源:基于新唐M0的XXTEA加密解密算法源码 /*--------------------------------------------------------------------------- ...

  8. [转] GIS算法源码集合

    其他GIS相关代码下载索引 http://www.mygis.com.cn/codeindex10.htm 1.深度优先实现的路径分析源码 http://www.mygis.com.cn/codes/ ...

  9. 机器学习算法源码全解析(三)-范数规则化之核范数与规则项参数选择

    前言 参见上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮叨下核范数和规则项参数选择.知识有限,以下都是我一些浅显的看法,如果理解存在错误,希望大家不吝指正.谢谢. 机器学习算法源码全解析( ...

最新文章

  1. 新版VIEW CLIENT FOR IPADANDRIOD发布了!
  2. IPFS (2) 系统技术架构
  3. Java 基础 | 命名和运算
  4. SQL行列转换问题整理
  5. 在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面
  6. mybatis 取查询值_Mybatis --- 映射文件、参数处理、参数值的获取、select元素
  7. 动态规划 —— 区间 DP —— 石子合并三讲
  8. 深入Linux文件系统
  9. Web API 文档生成工具 apidoc
  10. Linux环境进程间通信(一)管道和FIFO
  11. [转载]世界各个地区WIFI 2.4G及5G信道划分表(附无线通信频率分配表)
  12. 大橙子主题vfed3.15模板
  13. mysql人物画像_用户画像智能匹配,用户画像的算法有哪些?
  14. keil ARM 生成BIN文件的两种方式,直接复制就能用
  15. [收藏]经典爱情十句话
  16. 广工计算机学院李少娜,冯广-广东工业大学自动化学院
  17. NLP之PTM:自然语言处理领域—预训练大模型时代的各种吊炸天大模型算法概述(Word2Vec→ELMO→Attention→Transfo→GPT系列/BERT系列等)、关系梳理、模型对比之详细攻略
  18. Linux内核编译依赖
  19. 1.1 Tekton学习笔记之基本概念
  20. CTF-WEB——HTTP Headers类型

热门文章

  1. 微服务实践分享(2)api网关
  2. HBase Filter及对应Shell--转
  3. Linux 进程管理剖析--转
  4. UML用例图间关系说明
  5. 重庆云宇宙数据中台:iwemeta.com
  6. “京东小贷” 注册资本由30亿元增至50亿元,恭喜
  7. BM惊爆:EOS一周年工作KPI
  8. GMIS 2017大会杨洋演讲:认知分析-透过机器重新审视商业本质
  9. 深度学习-LeCun、Bengio和Hinton的联合综述(上)
  10. html中after伪类原理,css伪类before跟after原理与使用(原)