二、棧 adt
三、佇列 adt
四. 優先順序佇列(priority queue)
對之前學的一些知識點做個總結,比較簡略。記錄一些容易忘記的點。
資料結構的基本概念和術語可參考:資料結構基本概念定義(挺詳細的)資料型別 = 原子型別 + 結構型別
– 原子型別,如 int,float,字串, 是不可分割的基本型別
– 結構型別, 資料結構+操作,可以分割
抽象資料型別(adt):乙個資料模型以及定義在該模型上的一組操作
1. 實現列表adt的兩種資料結構:陣列(array-based)和鍊錶(linked list)
時間複雜度(效率)
operation
array
linked list
insert
×✔ o(n)
remove
×✔ o(n)
find
一樣 o(n)
一樣 o(n)
findkth
✔ o(1)
× o(n)
linked list更適合實現鍊錶的操作。因為陣列的長度是不能改的。
2. 鍊錶的結構
typedef
struct nodenode;
3. 操作bool isempty(node* head)
node* insertnode(node** phead, int index, double x)
int findnode(node* head, double x)
int deletenode(node** phead, double x)
void displaylist(node* head)
void destroylist(node* heas)是一種特殊的list adt
1. 插入和刪除都在同乙個地方(在top),first in last out
2. 棧的應用
3. 實現棧adt的兩種資料結構:陣列(array-based)和鍊錶(linked list)
operation
array
linked list
push
o(1)
o(1)
popo(1)
o(1)
topo(1)
o(1)
更適合用陣列來實現,因為陣列是個物理結構,可以直接找到。或者用反向的鍊錶,rear的指標指向最後乙個node。
4. 棧的結構
typedef
struct stackstack;
5. 操作
假設 maxtop = size - 1
bool createstack(stack *stack, int size)
bool isempty(stack* stack);
bool isfull(stack* stack);
bool top(stack* stack, double* x);
bool push(stack* stack, double x);
bool pop(stack* stack, double* x);
void displaystack(stack* stack);
void destroystack(stack* stack);是一種特殊的list adt
1. 在最後面(rear)插入,在最前面(front)刪除都在同乙個地方(在top),first in first out
2. 佇列的應用
3. 佇列的結構
typedef
struct queuestack;
4. a circular array
首尾相連的array,有乙個固定的長度。
5. 操作
bool createqueue(queue *queue, int size);
bool isempty(queue* queue);
bool isfull(queue* queue);
bool enqueue(queue* queue, double x);
bool dequeue(queue* queue, double* x);
void displayqueue(queue* queue);
void destroyqueue(queue** pqueue);1. 基本思想
資料結構 抽象資料型別
stdafx.h include include include include include include cout,cin 函式結果狀態碼 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 ...
資料結構 抽象資料型別
題記 先捂上眼睛,不想演算法,不想怎麼計算時間複雜度,先刷刷 單純 的資料結構 抽象資料型別 abstract data type 抽象資料型別的定義可以由一種資料結構和定義在其上的一組操作組成,資料結構又包括資料元素以及元素之間的關係。因此抽象資料元素型別一般由元素 關係及操作三種元素來定義。d,...
資料結構 抽象資料型別
抽象資料型別是指乙個數學模型以及定義在此數學模型上的一組操作,簡稱adt,abstract data type adt與具體的物理儲存無關,不論adt內部如何變化,都不影響外部使用。抽象資料型別可以使我們更容易描述現實世界。資料結構的本質就是抽象資料型別的物理實現。抽象資料型別的定義格式 adt 抽...