東京大学 工学系研究科 電気系工学専攻 2020年8月実施 問題4 情報工学II
Author
Description
I.
論理回路に関する以下の問に答えよ.
(1)
(2) 問 (1) に⽰した
(3) 問 (1) および (2) で⽰した⽐較器
次に,
(4)
(5) 問 (4) で設計した回路の⼊⼒

II.
ハッシュテーブルを⽤いたデータの格納と管理に関する以下の問に答えよ.table[N]
により正の整数を管理する⽅法について考える.ここで,正の整数 1
に⽰すデータ構造 node
の連結リストにより管理する.
(1) 整数 table[N]
に格納した時,ハッシュテーブルの内容を⽰せ.
(2) プログラム 2
は,正の整数 table[N]
に格納する関数 insert(x)
を⽰している.プログラム 2
の空欄を埋めて
(3) search(x)
は,与えられた正の整数 table[N]
に格納されている場合に search(x)
を
(4) table[N]
に格納されている正の整数
/* プログラム 1 */
struct node {
int value;
struct node *next;
};
struct node *table[N];
/* プログラム 2 */
int H(int x) { return(x % N); } void insert(int x) {
struct node *new, *check; new = (struct node *)malloc(sizeof (struct node)); new -> value = x; new -> next = NULL; check = table[H(x)];
/* ------------------------------------------- */
/* | | */
/* | BLANK | */
/* | | */
/* ------------------------------------------- */
}
Kai
I.
(1)
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | 1 |
(2)
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
(3)

PCで書くのが面倒だったので載せませんがカルノー図を書きます。
(4)

(5)

II.
(1)

ハッシュテーブルに一般的な書き方があるわけではないと思うので、書き方はなんでもいいと思う。
(2)
if(check == NULL) {
table[H(x)] = new;
} else {
while(check->next != NULL) check = check->next;
check->next = new;
}
(3)
int search(int x) {
struct node *check = table[H(x)];
while(check != NULL) {
if(check->value == x) return 1;
check = check->next;
}
return 0;
}