首页 > Java开发 > Java实现线性表和单链表以及链表的合并

Java实现线性表和单链表以及链表的合并

java实现线性链表

Java代码
  1. package list;  
  2.   
  3. public class LineList {  
  4.     Object[] elem;  
  5.     int current;  
  6.     int size;  
  7.   
  8.     public LineList() {  
  9.         this(100);//初始化生成一个100个元素的数组  
  10.     }  
  11.   
  12.     public LineList(int a) {  
  13.         elem = new Object[a];  
  14.         size = a;  
  15.         current = 0;  
  16.     }  
  17.   
  18.         //方法用来判断数组大小是否还够用  
  19.     public void enhanceSize() {  
  20.         if (current == size) {  
  21.             size+=10;  
  22.             Object[] newElem = new Object[size];  
  23.             int n=0;  
  24.              for(Object obj:elem){  
  25.                  newElem[n]=obj;  
  26.                  n++;  
  27.              }  
  28.             elem = newElem;  
  29.         }  
  30.   
  31.     }  
  32.   
  33.    //添加元素  
  34.     public void add(Object e){  
  35.         enhanceSize();  
  36.         elem[current]=e;  
  37.         current++;  
  38.           
  39.     }  
  40.   
  41. // 获取元素  
  42.     public Object get(int index){  
  43.           
  44.         return elem[index];  
  45.           
  46.     }  
  47.   
  48. }  

单链表;

1)节点定义:

Java代码
  1. package linekedList;  
  2.   
  3. public class NodeDemo {  
  4.     int data;  
  5.     NodeDemo next;  
  6.   
  7. }  

 2)单链表;

Java代码
  1. package linekedList;  
  2.   
  3. public class LinkedListDemo {  
  4.     NodeDemo head = new NodeDemo();  
  5.     NodeDemo currentNode = head;  
  6.   
  7. //尾插法添加元素  
  8.     public void add(int e) {  
  9.         NodeDemo newNode = new NodeDemo();  
  10.         newNode.data = e;  
  11.         currentNode.next = newNode;  
  12.         currentNode = newNode;  
  13.   
  14.     }  
  15.   
  16. 获得指定序号的元素  
  17.     public Object get(int index) {  
  18.         int i = 0;  
  19.         NodeDemo nodep = head;  
  20.         while ((nodep.next != null) && i < index) {  
  21.             nodep = nodep.next;  
  22.             i++;  
  23.   
  24.         }  
  25.         return nodep.data;  
  26.     }  
  27.   
  28.   
  29. //链表的插入  
  30.     public void insertList(int index, int e) {  
  31.   
  32.         if (index <= 0) {  
  33.             System.out.println("插入位置不合法!!!");  
  34.         } else {  
  35.             NodeDemo newNode = new NodeDemo();  
  36.             newNode.data = e;  
  37.   
  38.             int i = 0;  
  39.             NodeDemo nodep = head;  
  40.             while ((nodep.next != null) && i < index) {  
  41.                 nodep = nodep.next;  
  42.                 i++;  
  43.   
  44.             }  
  45.             newNode.next = nodep.next;  
  46.             nodep.next = newNode;  
  47.         }  
  48.   
  49.     }  
  50.       
  51.   
  52. //两个有序链表的合并,合并后为一个有序链表  
  53.     public LinkedListDemo mergeLinkedList(LinkedListDemo lB) {  
  54.         NodeDemo lANode = this.head.next;  
  55.         NodeDemo lBNode = lB.head.next;  
  56.         LinkedListDemo lC = new LinkedListDemo();  
  57.         NodeDemo currentNode = lC.head;  
  58.         while (lANode != null && lBNode != null) {  
  59.             if (lANode.data <= lBNode.data) {  
  60.                 currentNode.next = lANode;  
  61.                 currentNode = lANode;  
  62.                 lANode = lANode.next;  
  63.                 System.out.println("A的");  
  64.   
  65.             } else {  
  66.                 currentNode.next = lBNode;  
  67.                 currentNode = lBNode;  
  68.                 lBNode = lBNode.next;  
  69.                 System.out.println("B的");  
  70.             }  
  71.   
  72.         }  
  73.         if (lANode != null) {  
  74.             currentNode.next = lANode;  
  75.         } else {  
  76.             currentNode.next = lBNode;  
  77.   
  78.         }  
  79.         return lC;  
  80.   
  81.     }  
  82.       
  83.   
  84. }  

本文固定链接: http://www.devba.com/index.php/archives/6515.html | 开发吧

报歉!评论已关闭.