zoukankan      html  css  js  c++  java
  • 线性表的链式存储结构(Java代码实现)

    附上上一节的Java代码

      1 package LinkListDemo2;
      2 
      3 public class LinkList {
      4 
      5     int data;
      6     LinkList next;
      7 
      8     /**
      9      * 链表的初始化
     10      */
     11     public void initLink(LinkList L) {
     12         L = new LinkList();
     13         L.next = null;
     14     }
     15 
     16     /**
     17      * 链表的创建(头插法),n插入的元素个数
     18      */
     19     public void creatListHead(LinkList L, int n) {
     20         InitLink(L);
     21         for (int i = 0; i < n; i++) {
     22             LinkList linkList = new LinkList();
     23             linkList.data = i;
     24             linkList.next = L.next;
     25             L.next = linkList;
     26         }
     27     }
     28 
     29     /**
     30      * 链表的创建(尾插法),n插入的元素个数
     31      */
     32     public void creatListTail(LinkList L, int n) {
     33         InitLink(L);
     34         LinkList P;
     35         P = L;
     36         for (int i = 0; i < n; i++) {
     37             LinkList linkList = new LinkList();
     38             linkList.data = i;
     39             P.next = linkList; // 注意:等号两个不能互调位置
     40             P = linkList; // P移动到新的节点位置
     41         }
     42         P.next = null;
     43     }
     44 
     45     /**
     46      * 获取链表的长度
     47      */
     48     public int getLengthList(LinkList L) {
     49         int count = 0;
     50         LinkList P;
     51         P = L.next;
     52         while (P != null) {
     53             P = P.next;
     54             count++;
     55         }
     56         return count;
     57     }
     58 
     59     /**
     60      * 链表的插入 ,n表示插入的位置
     61      */
     62     public void insertList(LinkList L, int n, int num) {
     63         int count = 0;
     64         LinkList p, s;
     65         p = L;
     66         count = 1;
     67         while (p.next != null && count < n) { // 将p移动到插入的元素的上一位
     68             p = p.next;
     69             count++;
     70         }
     71         if (p == null || count > n) {
     72             System.out.println("不能插入!!");
     73         }
     74         s = new LinkList();
     75         s.data = num;
     76         s.next = p.next;
     77         p.next = s;
     78     }
     79 
     80     /**
     81      * 链表的删除 ,n表示删除的位置
     82      */
     83     public void deleteListElem(LinkList L, int n) {
     84         int count = 0;
     85         LinkList p;
     86         p = L;
     87         count = 1;
     88         while (p.next != null && count < n) { // 将p移动到插入的元素的上一位
     89             p = p.next;
     90             count++;
     91         }
     92         if (p == null || count > n) {
     93             System.out.println("非法删除元素!!");
     94         }
     95         p.next = p.next.next; // Java有着高尚的情操 gc(垃圾回收机制),所以自动内存释放
     96     }
     97 
     98     /**
     99      * 清空链表
    100      */
    101     public void clearList(LinkList L) {
    102         LinkList p, q;
    103         p = L.next;
    104         while (p != null) {
    105             q = p.next; // 调换
    106             p = null; // 清空
    107             p = q; // 重新给p赋值,相当于p移动到下一位
    108         }
    109         L.next = null; // 头节点重新指向空
    110     }
    111 
    112     /**
    113      * 前提条件:这个数存在 查找特定的元素 ,查找第四个位置的值,并返回
    114      */
    115     public int getElem(LinkList L, int n) {
    116         LinkList p;
    117         p = L.next;
    118         int count = 1;
    119         while (p != null) {
    120             if (count == n)
    121                 return p.data;
    122             ++count;
    123             p = p.next;
    124         }
    125         return 0;
    126     }
    127 
    128     /**
    129      * 判断链表是否为空
    130      */
    131     public boolean elemptyList(LinkList L) {
    132 
    133         if (L.next != null)
    134             return false;
    135         else
    136             return true;
    137     }
    138 
    139     /**
    140      * 遍历链表
    141      */
    142     void traverse(LinkList L) {
    143         LinkList linkList;
    144         linkList = L.next;
    145         while (linkList != null) {
    146             System.out.print(linkList.data + " ");
    147             linkList = linkList.next;
    148         }
    149     }
    150 
    151 }

    测试类

     1 package LinkListDemo2;
     2 
     3 public class test {
     4 
     5     public static void main(String[] args) {
     6         LinkList linkList = new LinkList();
     7         linkList.creatListHead(linkList, 5);
     8         System.out.println("头插法--------------");
     9         linkList.traverse(linkList);
    10         System.out.println("");
    11 
    12         System.out.println("尾插法--------------");
    13         LinkList linkList2 = new LinkList();
    14         linkList2.creatListTail(linkList2, 5);
    15         linkList.traverse(linkList2);
    16         System.out.println("");
    17 
    18         System.out.println("链表2长度:--------------");
    19         System.out.println(linkList2.getLengthList(linkList2));
    20 
    21         System.out.println("在链表2的3位置上插入100:--------------");
    22         linkList2.insertList(linkList2, 3, 100);
    23         linkList.traverse(linkList2);
    24         System.out.println("");
    25 
    26         System.out.println("删除链表1号元素:--------------");
    27         linkList.deleteListElem(linkList, 1);
    28         linkList.traverse(linkList);
    29         System.out.println("");
    30 
    31         System.out.println("判断链表2是否为空:--------------");
    32         System.out.println(linkList2.elemptyList(linkList2));
    33         System.out.println("清空链表2:--------------");
    34         linkList2.clearList(linkList2);
    35 
    36         System.out.println("判断链表2是否为空:--------------");
    37         System.out.println(linkList2.elemptyList(linkList2));
    38 
    39         System.out.println("查找链表1的3位置的值:--------------");
    40         System.out.println(linkList.getElem(linkList, 2));
    41     }
    42 
    43 }

    截图:

    完毕 - -

  • 相关阅读:
    Python全栈之路Day19
    Python全栈之路Day20
    Python全栈之路Day21
    子元素应该margin-top为何会影响父元素【转】
    HTML5的效果网站demo
    用CSS让字体在一行内显示不换行
    jQuery获得页面元素的绝对/相对位置
    DIV垂直/水平居中2(DIV宽度和高度是动态的)
    Jquery常用方法
    关于JS正则表达式
  • 原文地址:https://www.cnblogs.com/liuzeyu12a/p/10301406.html
Copyright © 2011-2022 走看看