講義演習課題(スタック、キュー関連)

演習問題1

サイズが5のスタックおよびキューに対して,60,30,40,70,20という順番 で,データが入っていきました.

(1)スタックおよびキューの格納イメージを書きなさい

(2)それぞれでこれらを出 力すると結果はどういう順番で出てきますか?

演習問題2

サイズが5のスタックと キューに対して,60,30,40,70,20,10,90という順番で,1つずつデータがス タックおよびキューに入っていきました.最後のデータを格納したとき,スタックおよびキューにはどのようにデータが格納されていますか?上記のようなイ メージ図で表しなさい.

なお,一杯になった状態でデータが挿入された場合の挙動は,

    • スタック ・・・ 最も古いデータから削除してプッシュ
    • キュー ・・・ デキューを行ってからエンキュー

として格納スペースを1つずつ確保することとします.(本講義のオリジナルルールです)

演習問題3

線形リストの活用して,スタックとキューを実現したい.具体的に線形リストにどのような操作(追加・削除など)をすれば、スタックおよびキューになるか?操作対象がどこなのか(リストの先頭、リストの末尾)を意識して説明せよ。

演習問題4

(2)List9-2を参考にして、リストの先頭か ら順番に出力していくというアルゴリズムをフローチャートで書け。

(3)List9-2がどのような処理をしているか図で説明せよ.

(4)List9-3 を参考にしてリストの前にデータを追加していくアルゴリズムを日本語で書け。

(5)List9-3がどのような処理をしているか図で説明 せよ.

演習問題5

サイズが6のスタックおよびキューに対し て,50,30,70,40,10,80,100,90,120というデータが1ずつ入りました.

(1)スタックにおけるデータ出力はどうなりますか?

(2)キューにおけるデータ出力はどうなりますか?

なお, 一杯になったときは, データを1つずつ出力して格納スペースを確保することとします.

演習問題6

教科書のプログラ ムコードに関する次の問いの答えよ

(1-1)List9-4は末尾にデータを追加 する処理である。このフローチャートを書け

(1-2)List9-4の【III】 【IV】の各状態を図を用いて説明せよ

(2)List9-5はリストからからデー タを消す処理である。【I】【II】【II】の各状態を図を用いて説明せよ。

(3)List9-6 はリストからからデータを消す処理である。この処理のフローチャートを書け

演習問題7

下記のサンプルプログラムを講義中の指示に従い改良せよ。

stack.c

#include<stdio.h>
#include<stdlib.h>
/*--- ノード ---*/
typedef struct _team{

char *name; //球団名

struct _team *next; //次の球団の位置

}Team;

Team *head; /* 先頭ノードへのポインタ */

Team *now,*new;
void main(){

//先頭のノードを追加

head = NULL;

new = calloc(1, sizeof(Team));

new->name="Fighters";

head =new;


//(1)それ以降のノードを追加する際はどうすればよいか?



//(2)pushの処理はどうなるか?



}