資料結構-第一篇:線性表
/**
- 線性表:
- 1.存在唯一的一個被稱作“第一個”的資料元素
- 2.存在唯一的一個被稱作“最後一個”的資料元素
- 3.除第一個之外,結構中的每個資料元素均只有一個前驅
- 4.除最後一個之外,結構中的每個資料元素均只有一個後繼
- 資料元素的位置與它的值相關時(即有序),稱為有序線性表;否則,稱為無序線性表
- 線性表的順序儲存表示:
- 用一組地址連續的儲存單元依次儲存線性表的資料元素,稱這種儲存結構的線性表為順序表
- 一般用陣列表示
- @author hopefully
*/
public class _04linearList<T> {
//順序表中一維陣列的初始容量
private final int MAX_SIZE=10;
//儲存元素的陣列物件
private T[] listArray;
//儲存順序表的當前長度
private int length;
//構造一個空的順序表
public _04linearList(){
//順序表初始為空
length=0;
listArray=(T[])new Object[MAX_SIZE];
}
public _04linearList(int n) {
if(n<=0) {
System.out.println("error");
System.exit(1);
}
length=0;
listArray=(T[])new Object[n];
}
//判斷順序表是否為空
public boolean isEmpty() {
return length==0;
}
//順序表的插入
public boolean add(T obj,int pos) {
if(pos<1||pos>length+1) {
System.out.println("pos值不合法");
return false;
}
//判斷順序表是否滿,滿就擴充套件為原來的兩倍,並將原陣列的值賦給新陣列
if(length==listArray.length) {
T[] p=(T[])new Object[2*length];
for(int i=0;i<length;i++) {
p[i]=listArray[i];
}
listArray=p;
}
for(int i=length;i>=pos;i--) {
listArray[i]=listArray[i-1];
}
listArray[pos-1]=obj;
length++;
return true;
}
//順序表的刪除
public T delete(int pos) {
if(isEmpty()) {
System.out.println("順序表為空,無法執行刪除操作");
return null;
}
if(pos<1||pos>length) {
System.out.println("pos不合法");
return null;
}
T val=listArray[pos-1];
for(int i=pos;i<length;i++) {
listArray[i-1]=listArray[i];
}
length--;
return val;
}
//順序表的查詢
public int find(T obj) {
if(isEmpty()) {
System.out.println("順序表為空");
return -1;
}
for(int i=0;i<length;i++) {
if(listArray[i].equals(obj)) {
return i+1;
}
}
return -1;
}
//順序表的按序號查詢
public T value(int pos) {
if(isEmpty()) {
System.out.println("順序表為空");
return null;
}
if(pos<1||pos>length) {
System.out.println("pos值不合法");
return null;
}
return listArray[pos-1];
}
//順序表更新元素
public boolean modify(T obj, int pos) {
if(isEmpty()) {
System.out.println("順序表為空,無法修改");
return false;
}
if(pos<1||pos>length) {
System.out.println("pos值不合法");
return false;
}
listArray[pos-1]=obj;
return true;
}
//順序表的長度
public int size() {
return length;
}
//遍歷順序表
public void list() {
for(int i=0;i<length;i++) {
System.out.print(listArray[i]+" ");
}
System.out.println();
}
//順序表清空
public void clear() {
length=0;
}
public static void main(String[] args) {
_04linearList<Integer> list=new _04linearList<Integer>();
for(int i=0;i<20;i++) {
list.add(i+1, i+1);
}
list.list();
list.modify(52, 13);
list.list();
list.delete(13);
list.list();
System.out.println(list.value(13));
}
}
轉載請註明出處
相關文章
- 資料結構——線性表資料結構
- 資料結構 | 線性表資料結構
- 資料結構-線性表資料結構
- 資料結構—線性表資料結構
- [資料結構] - 線性表資料結構
- 資料結構 - 線性表 - 順序表資料結構
- 資料結構-線性表、連結串列資料結構
- 線性表__資料結構筆記資料結構筆記
- 資料結構:線性表-例題資料結構
- 考研資料結構-線性表-順序表資料結構
- 【資料結構】線性表-單連結串列資料結構
- 資料結構筆記——線性表(下)資料結構筆記
- 資料結構筆記——線性表(中)資料結構筆記
- 資料結構——線性表P35.1資料結構
- 資料結構與演算法 - 線性表資料結構演算法
- 資料結構線性表兩種方式分享資料結構
- 資料結構基礎學習之線性表資料結構
- 資料結構:線性表(Python實現基本操作)資料結構Python
- 資料結構與演算法(一):線性表資料結構演算法
- 【資料結構&演算法】04-線性表資料結構演算法
- 資料結構與演算法 | 線性表 —— 順序表資料結構演算法
- 資料結構與演算法 | 線性表 —— 連結串列資料結構演算法
- 資料結構:特殊的線性表之 棧 & 佇列資料結構佇列
- 前端資料結構--線性結構-連結串列前端資料結構
- 資料結構與演算法-線性表-單連結串列資料結構演算法
- 資料結構實驗三:線性表綜合實驗資料結構
- 資料結構和演算法(一)線性表實現資料結構演算法
- Java實現資料結構之線性結構Java資料結構
- 資料結構與演算法之線性結構資料結構演算法
- 演算法與資料結構1800題 之線性表 (三)演算法資料結構
- C語言資料結構(8)--棧 後進先出線性表C語言資料結構
- 線性表的結構詳解
- 資料結構與演算法(三) -- 線性表之雙向連結串列資料結構演算法
- Java學習筆記:資料結構之線性表(雙向連結串列)Java筆記資料結構
- 老楊《大話資料結構》第三章 線性表資料結構
- C#資料結構與演算法1-C# 線性表C#資料結構演算法
- 資料結構實驗之查詢七:線性之雜湊表資料結構
- 資料結構第一篇 棧資料結構