第7回では,以下の項目に関して学ぶ.
リストを用いて,整数の値を蓄積するスタックを実現したソースコード prog7-1.c
を作成する.
ここでは,リストを表現する構造体を以下のように定義する.
struct element { int value; struct element *next; };
また,リストを用いたスタックを以下の構造体で定義する.
struct stack { struct element *top; int size; };この構造体は,整数の値を
top
が先頭の要素を指すリストに格納する.
いま,スタックを実現するために,以下に示す4つの関数を用意する.
struct stack *create_stack();
value
を格納したリストの要素を生成する.struct element *create_element(int value);
stack
に格納されている整数の値を挿入した順番に画面に表示する.void print_stack(struct stack *stack);
stack
に格納されている要素の数を返す.int size_of_stack(struct stack *stack);
さらに,スタックを操作する以下に示す4つの関数を用意する.
stack
に整数の値 value
を挿入する.void push(struct stack *stack, struct element *elem);
stack
から整数の値を取り出す.スタックが空の場合は NULL
を返す.struct element *pop(struct stack *stack);
stack
から次に取り出される整数の値を取得する(整数の値は取り出さない).スタックが空の場合は NULL
を返す.struct element *peek(struct stack *stack);
stack
が空かどうかを検査する.空の場合は 1
,空でない場合は 0
を返す.int is_empty(struct stack *stack);
上記の8つの関数を持つprog7-1.c
を作成せよ.
リストを用いて,整数の値を蓄積するキューを実現したソースコード prog7-2.c
を作成する.
ここでは,リストを表現する構造体を以下のように定義する.
struct element { int value; struct element *next; };
また,リストを用いたキューを以下の構造体で定義する.
struct queue { struct element *top; struct element *rear; int size; };この構造体は,整数の値を
top
が先頭の要素,rear
が末尾の要素を指すリストに格納する.
いま,キューを実現するために,以下に示す4つの関数を用意する.
struct queue *create_queue();
value
を格納したリストの要素を生成する.struct element *create_element(int value);
queue
に格納されている整数の値を挿入した順番に画面に表示する.void print_queue(struct queue *queue);
queue
に格納されている要素の数を返す.int size_of_queue(struct queue *queue);
さらに,キューを操作する以下に示す4つの関数を用意する.
queue
に整数の値 value
を挿入する.void enqueue(struct queue *queue, struct element *elem);
queue
から整数の値を取り出す.キューが空の場合は NULL
を返す.struct element *dequeue(struct queue *queue);
queue
から次に取り出される整数の値を取得する(整数の値は取り出さない).キューが空の場合は NULL
を返す.struct element *peek(struct queue *queue)
queue
が空かどうかを検査する.空の場合は 1
,空でない場合は 0
を返す.int is_empty(struct queue *queue)
上記の8つの関数を持つprog7-2.c
を作成せよ.
3種類の括弧'{ }
', '[ ]
', '( )
'を含む文字列 text
に対して,左括弧と右括弧の対応が正しいかどうかを検査する関数
int check(char *text);を持つソースコード
prog7-3.c
を作成する.
対応が正しいとは,同じ種類の左括弧と右括弧がネストしている(入れ子構造になっている)ことを指す.対応が正しい場合には 1
,対応が正しくない場合には 0
を返す.
スタック(配列でもリストでもよい)を用いて,prog7-3.c
を作成せよ.その際,あらかじめ用意した5つのテスト関数に加えて,新たなテスト関数を追加せよ.