注:本文為根據《資料結構與演算法分析》一書所做筆記與理解我們稱大小為0的表為空表。
除空表外的任何表(a1 , a2 , a3 , …… , an),我們說 ai+1 後繼 ai (或繼 ai 之後)並稱 a i-1 (i < n)前驅a i ( i > 1)。
元素 ai 在表中的位置為i。
接下來,介紹要在表adt中進行的操作:
printlist:列印表
makeempty:清空表
find:返回關鍵字首次出現的位置
insert:從表的某個位置插入某個關鍵字
delete:從表的某個位置刪除某個關鍵字
如果用陣列來實現表這個資料結構,列印、清空、查詢元素還好說。但是,如果要插入乙個元素在某個位置,那就得從這個位置開始,後面的元素全部往後挪一位。同樣的,如果要在某個位置刪除乙個元素,就得從這個位置開始,後面的元素全部往前挪一位。這也太麻煩了。另外,在定義資料結構的時候,還需要預估一下這個表的大小,從而初始化陣列的大小。
由於這些原因,我們一般不用陣列。
為了避免插入和刪除時的移動操作,考慮使用指標。這樣,表中的元素就可以不用連續儲存,隨便放在記憶體中的哪個位置,只要通過指標指過去就可以了。
鍊錶中每個j節點包括兩部分——值和指向下乙個節點的指標(即下乙個j節點的位址)。
有可能存在的問題是:如果我們刪掉了第乙個元素,或者在第乙個元素前面再插入了乙個元素,這樣,我們的首元素的指標就會發生變化。因此,一般來說,我們會流出乙個標誌節點——表頭。表頭不儲存任何值,只是為了保證鍊錶的第乙個節點一直不變。
以int型元素為例,放上c++**
class node
node
(int x)
node
(int x , node* next)
};
class list
list
(node* node)
//其他一些成員函式
……};
新增一些輔助的成員函式:
//清空鍊錶
void
makeempty()
//判斷是否為空
bool isempty()
//判斷當前是否為鍊錶結尾
bool islast()
//移動到表頭
void
tohead()
//往後移動一位
void
tonext()
//往前移動一位
void
topre()
對於printlist或find操作,只需要從表頭的指標開始,依次獲取下乙個,下下個……節點的指標即可。
//列印鍊錶
void
print()
cout << endl;
cur = t;
}
//查詢元素,返回位置,沒有找到返回-1
intfind
(int k)
++pos;
}return-1
;}
對於刪除元素,只需要從要刪除的節點那裡修改乙個指標即可。如下圖,以要刪除節點3為例
先令當前節點的指標(cur指標)指向要刪除的節點的前乙個節點,即節點2
然後將節點2的next指標直接指向節點4即可。這樣,在鍊錶中,就沒有節點3這個結構了。
相應**如下:
//刪除值為k的元素
void
deletenode
(int k)
cur = t;
}//找到值為k的節點的前驅節點
void
findprevious
(int k)
}
對於插入元素,只需要新建乙個新的節點,將其插入相應的位置,只需要修改兩個指標。以下圖中鍊錶為例,在節點2和節點4之間插入新的節點3.
首先,令當前節點指標(cur指標)指向要插入的位置的前乙個節點,然後新建乙個節點。新建這個節點的值為要插入的值,next指標為插入位置的下乙個節點的位址(即節點4的位址)
然後,將cur節點的next指標指向新節點即可。
**就很簡單了,假設已經將cur指標移動到了指定位置,只需新建節點並修改相應的next指標即可。
//在當前位置插入值為k的元素
void
insert
(int k)
資料結構 1 順序表
資料結構的基礎知識 1968年美國克努特教授開創了資料結構的最初體系 資料結構是指資料的邏輯結構和儲存結構及其操作 資料結構是一門綜合性的專業客場,是一門介於數學 計算機硬體 計算機軟體之間的一門核心課程。是設計和實現編譯系統 作業系統 資料庫系統及其他系統程式和大型應用程式的基礎 資料的邏輯結構 ...
資料結構 1 順序表
目錄 順序表1.順序表的概念及結構 2.特點 3.動態順序表的實現 3.1 順序表初始化 3.2 順序表銷毀 3.3 順序表列印 3.4 檢查空間,如果滿了,進行增容 3.5 順序表尾插 3.6 順序表尾刪 3.7 順序表頭插 3.8 順序表頭刪 3.9 順序表查詢 3.10 順序表在pos位置插入...
資料結構 1 順序表
線性表 具有相同資料型別的n n 0 個資料元素的有序序列 函式中定義的陣列位於棧段,系統棧大小ulimit s8192 8mb 棧段存管理節點位址,管理節點 資料都在堆段 結構操作 增刪改查 刪除指當前記憶體可以被占用,如果被覆寫就找不回來了 include include include inc...