機試常見的資料結構

2021-08-16 20:42:11 字數 1108 閱讀 7426

北航的機試要求用標準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...