LinkList怎么手动创建、手动写一个
2021/8/4 23:08:04
本文主要是介绍LinkList怎么手动创建、手动写一个,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
public class Link { /** * 存放数据 */ public int data; /** * 存放下一个节点 */ public Link next; public Link(int data) { this.data = data; } public Link(int data, Link next) { this.data = data; this.next = next; } public Link() { } public void display() { System.out.println(data + " "); } @Override public String toString() { return "Link{" + "data=" + data + ", next=" + next + '}'; } }
public class LinkedList { public Link first;// 定义一个头节点 public Link last;//尾指针永远指向头节点 public int size = 0;// 节点的位置 public LinkedList() { this.first = null;// } /** * 判断链表是否为空 * * @return */ public boolean isis() { return size == 0; } /** * 头插法 * * @param data */ public void addFirst(int data) { Link L = new Link(data); L.next = first; first = L; size++; } /** * 插入 * * @param data */ public void add(int data) { if (first == null) { first = new Link(data); last = first; } else { Link newL = new Link(data); last.next = newL; last = newL; } size++; } /** * 从头删除 * * @return */ public Link removeFirst() { Link d = first; first = d.next; size--; return d; } /** * 删除最后一个 */ public void delLast() { dell(size - 1); } /** * 获取链表长度 */ public void displayAllLink() { Link cure = first; while (cure != null) { cure.display(); cure = cure.next; } System.out.println("长度" + size); } /** * 获取指定位置的节点元素 * * @param index * @return */ public Link getData(int index) { if (index < 0 && index > size - 1) { throw new IndexOutOfBoundsException("An array"); } Link count = first; for (int i = 0; i < size && count != null; i++, count = count.next) { if (i == index) { return count; } } return null; } /** * 按值查找指定位置 * * @param element * @return */ public int selectIndex(int element) { Link current = first; for (int i = 0; i < size && current != null; i++, current = current.next) { if (current.data == element) { return i; } } return -1; } /** * 删除链表中数值最大的元素 */ public void delMax() { // 要遍历的链表 Link cu = first; // 初始化一个节点,当中间变量 Link cc = new Link(0); // 遍历 for (int i = 0; i < size && cu != null; i++, cu = cu.next) { if (cu.data > cc.data) { cc.data = cu.data; } } int data = cc.data; int number = selectIndex(data); dell(number); } /** * 删除链表中数值最小的元素 */ public void delMin() { // 要遍历的链表 Link cu = first; // 初始化一个节点,当中间变量 Link cc = new Link(0); // 遍历 for (int i = 0; i < size && cu != null; i++, cu = cu.next) { if (cu.data < cc.data) { cc.data = cu.data; } } int data = cc.data; int number = selectIndex(data); dell(number); } /** * 从指定位置处插入数据 * * @param t * @param index */ public void insert(int t, int index) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException("索引超出线性表范围"); } if (first == null) { addFirst(t); } else { if (index == 0) { addFirst(t); } else { Link k = getData(index - 1); k.next = new Link(t, k.next); size++; } } } /** * 从指定位置处删除 * * @param index */ public void dell(int index) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException("索引超出线性表范围"); } Link del; if (index == 0) { first = first.next; } else { Link neL = getData(index - 1); del = neL.next; neL.next = del.next; del.next = null; } size--; } /** * 清空链表 */ public void clear() { first = null; last = null; size = 0; } /** * 按从小到大排序 */ public void Min_to_Max() { // 要遍历的链表 Link cu = first; // 记录最小值 int min; while (cu != null) { // 内重循环从当前节点的下一个节点循环到尾节点,找到和外重循环的值比较最小的那个,然后与外重循环进行交换 Link nextLink = cu.next; while (nextLink != null) { // 比外循环小的值放在前面 if (nextLink.data < cu.data) { min = nextLink.data; nextLink.data = cu.data; cu.data = min; } nextLink = nextLink.next; } cu = cu.next; } } /** * 按从大到大排序 */ public void Max_to_Min() { // 要遍历的链表 Link cu = first; // 记录最小值 int min; while (cu != null) { // 内重循环从当前节点的下一个节点循环到尾节点 //找到和外重循环的值比较最小的那个,然后与外重循环进行交换 Link nextLink = cu.next; while (nextLink != null) { // 比外循环小的值放在前面 if (nextLink.data > cu.data) { min = nextLink.data; nextLink.data = cu.data; cu.data = min; } nextLink = nextLink.next; } cu = cu.next; } } public static void main(String[] args) { LinkedList linkedList = new LinkedList(); linkedList.add(13); linkedList.add(14); linkedList.add(15); for (int i = 0; i < linkedList.size; i++) { System.out.println(linkedList.getData(i)); } linkedList.dell(0); for (int i = 0; i < linkedList.size; i++) { System.out.println(linkedList.getData(i)); } } }
这篇关于LinkList怎么手动创建、手动写一个的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南