數據結構之線性表(一)
阿新 • • 發佈:2018-10-27
不存在 ear public 線性結構 turn 過程 結構 length class
一、線性表的特性
1、線性結構的特性
(1)集合中必存在唯一的“第一元素”和唯一的“最後元素”。
(2)除最後一個元素之外,均有唯一的後繼和唯一的前驅。
2、線性表的基本操作過程
(1)用 Setnull(L)置空表;
(2)用Length(L)求表的長度和表中各元素的個數;
(3)用Get(L,i)獲取表中的第i個元素(1=<i<=n);
(4)用Prior(L,i)獲取i的前驅元素;
(5)用Next(L,i)獲取i的後繼元素;
(6)用Locate(L,x)返回指定元素在表中的位置;
(7)用Insert(L,i,x)插入新元素;
(8)用Delete(L,x)刪除已存在的元素;
(9)用Empty(L)來判斷是否為空。
3、線性表的結構特點
均勻性、有序性。
二、順序表操作
線性表的基本操作過程如下:
(1)計算順序表的長度
public int GetLength() { return last + 1; //順序表的長度就是數組最後一個元素的索引last加1 }
(2)清空操作
public void Clear() { return last = - 1;//清空所有元素,此時last=-1 }
(3)判斷線性表是否為空
public bool IsEmpty() { if (last==-1) {return true; } else { return false; } }
(4)判斷線性表是否為滿
public bool IsFull() { if (last==maxsize-1) { return true; } else { return false; } }
(5)附加操作
public void Append(T item) { if (IsFull()) { Console.WriteLine("List is full");//在末尾加元素 } data[++last] = item; }
(6)插入操作
public void Insert(T item, int i) { //判斷順序表是否已滿 if(IsFull()) { Console.WriteLine("List is full"); return; } //判斷插入的位置是否正確, //i小於1表示在第1個位置之前插入 //i小於last+2表示在最後一個元素後面的第2個位置插入。 if (i<1||i>last+2) { Console.WriteLine("Position is error!"); return; } //在順序表的表尾插入數據元素 if (i==last+2) { data[i - 1] = item; } else //在表的其他位置插入數據元素 { //元素移動 for (int j = last; j >= i - 1;--j) { data[j + 1] = data[j]; } //將新的數據元素插入到第i個位置上 data[i - 1] = item; } //修改表長 ++last; }
(7)刪除操作
public T Delete(int i) { T tmp = default(T); //判斷表是否為空 if (IsEmpty()) { Console.WriteLine("List is empty"); return tmp; } //判斷刪除的位置是否正確 //i小於1表示刪除1個位置之前的元素 //i大於last+1表示刪除最後一個元素後面的第1個位置的元素 if (i<1||i>last+1) { Console.WriteLine("Position is error!"); return tmp; } //刪除的是最後一個元素 if (i==last+1) { tmp = data[last--]; return tmp; } else //刪除的不是最後一個元素 { //元素移動 tmp = data[i - 1]; for (int j = i; j <= last;++j) { data[j] = data[j++]; } } //修改表長 --last; return tmp; }
(8)獲取元素
public T GetElem(int i) { if (IsEmty()||(i<1) || (i>last + 1)) { Console.WriteLine("List is Empty or Position is error!"); return default(T); } return data[i - 1]; }
(9)按值查找
public int Locate(T value) { //順序表為空 if (IsEmty()) { Console.WriteLine("List is Empty!"); return -1; } int i = 0; //循環處理順序表 for (i = 0; i <= last;++i) { //順序表中存在與給定值相等的元素 if (values.Equals(data[i]) { break; } } //順序表中不存在與給定值相等的元素 if (i>last) { return -1; } return i; }
三、鏈表操作
四、實例演練
數據結構之線性表(一)