北航的機試要求用標準c程式設計,所以很多c++的庫都沒法用。因此我使用最簡單的**實現了幾個常見的資料結構。標準c庫參考:
1. 陣列實現的棧。此處棧的元素預設為int, 也可以改為其他。
struct stack
void push(int x)
int pop()
bool isempty()
bool isfull()
};
2. 優先佇列。優先佇列有多種實現方式,最簡單的是鍊錶實現。鍊錶實現又可以分兩種:一種是每次push都放在表頭(o(1)),pop時遍歷整個鍊錶找出最小值彈出(o(n));另一種是總維持乙個有序的鍊錶,push時需要遍歷鍊錶(o(n)),pop只需彈出表頭(o(1))。考慮到實現複雜度以及push的次數總大於等於pop()次數。故選取第一種實現方式。
/*
優先佇列:簡單鍊錶實現
*/#include
#include
#define len sizeof(node)
#define max 99999;
struct node;
struct queue
node* create(int
x) p->x=x;
p->next=null;
return p;
}void push(int
x) bool isempty()
intpop()
q=p;
p=p->next;
}if(tmq==null)else
free(tmp);
return min;
}};int main()elseelse}}
while(!q.isempty())
printf("\n");
return
0;}
樣例:
輸入輸出
1 21 3
1 01 420
the top of the heap: 0
2 3 4
注意:malloc 和free 函式的使用
機試之資料結構STL詳解
pair的常見用法詳解 algorithm標頭檔案下常用函式介紹 機試stl之stack 括號匹配 include include include include include using namespace std int main else if str i else while bracke...
資料結構常見演算法機試題
二.二叉排序樹 三.優先佇列 四.雜湊表 提交 讀入輸入的字串,建立一顆以指標方式儲存的二叉樹,以 表示空樹。abc de g f include include using namespace std string s struct node node build int pos pos不能回溯,...
資料結構機試複習10 求和 最短字首
給定乙個具有n個整數的陣列,問在s中是否存在3個元素a b c使得a b c 0。注意 三元組 a b c 必須是乙個非遞減順序 即a b c 輸出的結果不能重複 例如,給定陣列s 1 0 1 2 1 4 輸出 1,0,1 以及 1,1,2 1 先上乙個針對matrix的ac 輸入輸出沒有leetc...