- (1) 記号表ライブラリ関数の構成例
記号表ライブラリは、例えば以下の様な構成として下さい。記号表のデータを外部から隠すため、構造体はstaticで宣言すると良いでしょう。#include <stdio.h> static struct st { char *key; struct st *next; } *root, *ptr, *qtr; void symbol_init () { root = NULL; } void symbol_insert (data) char *data; { dataのリスト形式の記号表への登録 } int symbol_search (data) char *data; { dataの記号表からの探索 } int symbol_size () { rootからnextフィールドがNULLであるセルまでのセルの個数をカウントする } void symbol_print () { nextフィールドがNULLになるまでプリント }- (2)main関数の構成例
#include <stdio.h> int main( void ) { static char *data[ ] = {"begin", "end", "start", "print"}; static int count = 4; /* ここで記号表に対する各種の操作を試す */ }- (3)サイズを求める関数
記号表の構造体のポインタを引数とし、記号表の終端まで検索し、経路長を変数countでカウントするものです。関数の返り値はcountです。以下の?????はどのようになるでしょうか。
int symbol_size ( ????? ) { int count = 0; if (root == NULL) ????? else { for (ptr = root; ptr != NULL; ptr = ptr->next) count++; ????? } }