【Java数据结构】线性表
生活随笔
收集整理的這篇文章主要介紹了
【Java数据结构】线性表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
線性表
線性表是最基本、最簡單、也是最常用的一種數據結構。 線性表中數據元素之間的關系是一對一的關系,即除了第一個和最后一個數據元素之外,其它數據元素都是首尾相接的(注意,這句話只適用大部分線性表,而不是全部。比如,循環鏈表邏輯層次上也是一種線性表(存儲層次上屬于鏈式存儲),但是把最后一個數據元素的尾指針指向了哨位結點)。?
我們說“線性”和“非線性”,只在邏輯層次上討論,而不考慮存儲層次,所以雙向鏈表和循環鏈表依舊是線性表。 在數據結構邏輯層次上細分,線性表可分為一般線性表和受限線性表。一般線性表也就是我們通常所說的“線性表”,可以自由的刪除或添加結點。受限線性表主要包括棧和隊列,受限表示對結點的操作受限制。?
線性表的邏輯結構簡單,便于實現和操作。因此,線性表這種數據結構在實際應用中是廣泛采用的一種數據結構。(以上定義參考百度,懶得解釋#-_-)
線性表模型
package cn.deu;public class MyArray {long [] arr;int num;public MyArray() {arr=new long[50];}public MyArray(int n){arr=new long[n];}//插入public void insert(int n){//無序插入法/*arr[num++]=n;*///冒泡法/*long t=0;arr[num++]=n;for (int i = 0; i < num; i++) {for (int j = i+1; j < num; j++) {if(arr[i]>arr[j]){t=arr[i];arr[i]=arr[j];arr[j]=t;}}}*/int i;for (i = 0; i < num; i++) {if(arr[i]>n)break;}for (int j = num; j > i; j--) {arr[j]=arr[j-1]; }arr[i]=n;num++;}//查找public int find(int n){//線性查找 // for (int i = 0; i < num; i++) { // if(arr[i]==n) // return i; // } // return -1;int lower=0;int upper=num;int mid=0;//二分查找while(true){mid=(lower+upper)/2;if(arr[mid]==n)return mid;elseif(lower>upper)return -1;else{ if(arr[mid]>n)upper=mid-1;elselower=mid+1;}}}//顯示public void show(){for (int i = 0; i < num; i++) {System.out.print(arr[i]+" ");}System.out.println();}//刪除public void delete(int n){if(find(n)==-1)System.out.println("沒有發現數據,刪除失敗!");else{for (int i = find(n); i < num; i++) {arr[i]=arr[i+1];}num--;}}//修改public void change(int n,int m){if(find(n)==-1)System.out.println("沒有發現數據,修改失敗!");else{arr[find(n)]=m;}}}線性表測試 package en.edu.Test;import cn.deu.MyArray;public class Test {public static void main(String[] args) {MyArray list=new MyArray();//插入測試list.insert(12);list.insert(2134);list.insert(132);list.insert(67);list.insert(9);list.insert(12345);list.insert(90);//查找測試System.out.println(list.find(132));System.out.println(list.find(110));//顯示測試list.show();//刪除測試list.delete(12345);list.show();list.delete(15);list.show();//修改測試list.change(9, 45);list.show();list.change(14, 20);list.show();}}
結果:
4
-1
9 12 67 90 132 2134 12345?
9 12 67 90 132 2134?
沒有發現數據,刪除失敗!
9 12 67 90 132 2134?
45 12 67 90 132 2134?
沒有發現數據,修改失敗!
45 12 67 90 132 2134?
轉載請注明出處:http://blog.csdn.net/acmman/article/details/50520267
總結
以上是生活随笔為你收集整理的【Java数据结构】线性表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “#”的迷雾
- 下一篇: KindEditorckplayer的简