7、JavaScript語言實作
7.1、用ES6語法撰寫順序表類
//1、創建類
class MyList {
//1. initList(&L):初始化表,構造一個空的線性表,放回值應該是一個線性表
initList() {
//1.1、創建陣列,本身就可變長
this.arr = [];
//1.2、線性表的元素多少
this.size = 0;
}
//2. destroyList(&L):銷毀操作,銷毀線性表,并釋放線性表L所占的記憶體空間,放回值為void
destroyList() {
this.arr = null;
this.size = 0;
return true;
}
//3. locateElem(L,e):按值查找操作,在表中L查找具有給定關鍵值的元素,放回一個int型別
locateElem(value) {
if(this.arr == null) return 0;
for(var i = 0;i < this.size;i++) {
if(this.arr[i] == value) return i+1;
}
return 0;
}
//5. listInsert(&L,i,e):插入操作,在表L中的第i個位置上插入指定的元素e,
listInsert(pos,value) {
if(this.arr == null) return false;
if(pos < 1 || pos > this.size + 1) return false;
//插入
for(var i = this.size;this.size >= pos;i--) {
this.arr[i] = this.arr[i - 1];
}
this.arr[pos - 1] = value;
this.size++;
return true;
}
//4. getElem(L,i):按位查找,獲取表中第i個位置的元素的值,
getElem(pos) {
if(this.arr == null) return false;
if(pos < 1 || pos > this.size) return false;
return this.arr[pos -1];
}
//6. listDelete(&L,i,e):洗掉操作,洗掉表L中第i個位置的元素,
listDelete(pos) {
if(this.arr == null) return false;
if(pos < 1 || pos > this.size) return false;
for(var i = pos -1;i < this.size - 1;i++) {
this.arr[i] = this.arr[i + 1];
}
this.size--;
return true;
}
//7. PrintList(L):輸出操作,按前后順序輸出線性表L的所有元素值,
PrintList() {
if(this.arr != null) {
var str = "";
for(var i = 0;i < this.size;i++) {
str += this.arr[i] + " ";
}
console.log(str);
}
}
//8. empty(L):判空操作,若L為空表,則放回true,否則放回false,
isEmpty() {
return this.arr == null;
}
//9. length(L):求表長,放回線性表L的長度,即L中資料元素的個數,
getLength() {
return this.size;
}
}
7.2、撰寫網頁進行輸出測驗
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src=https://www.cnblogs.com/xgp123/p/"./MyList.js"></script>
<body>
<script>
//1、測驗初始化操作
var list = new MyList();
list.initList();
//2、測驗插入操作
var str = "";
for(var i = 1;i < 100;i++) {
if(list.listInsert(i,i*100)) str += i + "號元素插入成功";
}
console.log(str);
//3、測驗判空操作
if(list.isEmpty()) console.log("空表");
else console.log("非空表");
//4、測驗求表長操作
console.log(list.getLength());
//5、測驗按位洗掉操作
if(list.listDelete(56)) console.log("洗掉成功");
//6、測驗按位查找的操作
console.log(list.getElem(56));
//7、測驗按值查找的操作
console.log(list.locateElem(1000));
//8、測驗輸出操作
list.PrintList();
//9、測驗銷毀操作
if(list.destroyList()) console.log("銷毀成功");
</script>