[Java] 面向对象的方法实现链表 →→→→→进入此内容的聊天室

来自 , 2020-10-17, 写在 Java, 查看 148 次.
URL http://www.code666.cn/view/59e0b265
  1. package LinkList;
  2. //节点类
  3. class Node{
  4.         private Node next;
  5.         private int value;
  6.         Node(int val){
  7.                 value=val;
  8.         }
  9.         public int getValue() {
  10.                 return value;
  11.         }
  12.         public Node getNext() {
  13.                 return next;
  14.         }
  15.         public void setValue(int val) {
  16.                 value=val;
  17.         }
  18.         public void setNext(Node nex) {
  19.                 next=nex;
  20.         }
  21. }
  22.  
  23. class MyLinkList{
  24.         private Node head;
  25.         private Node tail;
  26.         private int size=0;
  27.         //添加节点
  28.         public void append(int newData) {
  29.                 Node newNode=new Node(newData);
  30.                 size++;
  31.                 if(head==null) {
  32.                         head=newNode;
  33.                         tail=newNode;
  34.                         return;
  35.                 }
  36.                 tail.setNext(newNode);
  37.                 tail=newNode;
  38.         }
  39.         //插入节点
  40.         public void insert(int position,int newData) {
  41.                 Node node=head;
  42.                 Node newNode=new Node(newData);
  43.                 if(position==0) {
  44.                         newNode.setNext(node);
  45.                         head=newNode;
  46.                 }
  47.                 else {
  48.                         for(int i=0;i<position-1;i++) {
  49.                                 node=node.getNext();
  50.                         }
  51.                         Node nodeNext=node.getNext();
  52.                         node.setNext(newNode);
  53.                         newNode.setNext(nodeNext);
  54.                 }
  55.                 size++;
  56.         }
  57.         //获取链表长度
  58.         public int getSize() {
  59.                 return size;
  60.         }
  61.         //遍历
  62.         public int getNodeData(int position) {
  63.                 if(position<0 || position>=size) {
  64.                         return -1;
  65.                 }
  66.                 Node node=head;
  67.                 for(int i=0;i<position;i++) {
  68.                         node=node.getNext();
  69.                 }
  70.                 int data=node.getValue();
  71.                 return data;
  72.         }
  73.         //删除节点
  74.         public void delete(int position) {
  75.                 Node node=head;
  76.                 if(position==0) {
  77.                         node=node.getNext();
  78.                         head=node;
  79.                 }
  80.                 else {
  81.                         for(int i=0;i<position-1;i++) {
  82.                                 node=node.getNext();
  83.                         }
  84.                         Node nextNode=node.getNext();
  85.                         node.setNext(nextNode.getNext());
  86.                 }
  87.                 size-=1;
  88.         }
  89.         //打印链表
  90.         public void show() {
  91.                 Node node=head;
  92.                 int value;
  93.                 for(int i=0;i<size-1;i++) {
  94.                         value=node.getValue();
  95.                         System.out.print(value);
  96.                         System.out.print("->");
  97.                         node=node.getNext();
  98.                 }
  99.                 System.out.print(node.getValue());
  100.                 System.out.print("\n");
  101.         }
  102. }
  103. //测试
  104. public class LinkList {
  105.         public static void main(String[] args) {
  106.                 MyLinkList link=new MyLinkList();
  107.                 for(int i=0;i<20;i+=2)
  108.                 link.append(i);
  109.                 link.show();
  110.                 link.insert(1, 5);
  111.                 link.show();
  112.                 System.out.println(link.getSize());
  113.                 link.delete(2);
  114.                 link.show();
  115.                 System.out.println(link.getSize());
  116.                 System.out.println(link.getNodeData(3));
  117.         }
  118.  
  119. }
  120.  

回复 "面向对象的方法实现链表"

这儿你可以回复上面这条便签

captcha