日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《漫画算法》源码整理-2 数组 链表 队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數組操作

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();} }

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的《漫画算法》源码整理-2 数组 链表 队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。