

以下のを教えてください。
リストで表現されたキューに対して、dequeueを行う関数dequeueを作成。関数の返り値は、キューから取り出した文字(char型)とする。最初に、enqueue関数で幾つかの文字をキューに入れた後に、print_queue_list関数によってキューの中身を確認を出力。その後、作成したdequeue関数を呼び出し、dequeueされた文字を出力。さらに再度print_queue_list関数を呼び出し、データが1つ減ってることを確認。
作成するdequeue関数は、キューが空やデータが1つだけの状態であっても正しく動作するようにせよ。キューが空の場合は、'/0'(/は逆)を返り値として返す。また、dequeueしたデータ(struct data*)は必ずfree関数を用いてメモリ解放を行うこと。
dequeue関数のプロトタイプ宣言は以下のように
char dequeue(struct queue *q);
」
#include <stdio.h>
#include <stdlib.h>
struct data{ //構造体
char key;
struct data *next;
};
void push (struct data **top, char key)
{
struct data *p;
struct data *add = malloc(sizeof(struct data));
if (add == NULL){
printf("メモリ確保は失敗です。\n");
exit(1);
}
add->key = key;
add->next = NULL;
if (*top == NULL){
*top = add;
return;
}
p = *top;
while(p->next != NULL){
p = p->next;
}
p->next = add;
}
void print_stack_list(struct data *top)
{
struct data *p, *q;
printf("-----print_stack_list start----\n"); //追加(stackの表示開始を見るため)
for(q = NULL; q != top; q = p){
for(p = top; p->next != q; p = p->next) ;
printf("%c\n", p->key);
}
}
int main(void)
{
char key;
struct data *top = NULL;
print_stack_list(top);
push(&top,'a');
push(&top,'b');
push(&top,'c');
push(&top,'d');
print_stack_list(top);
free(top); //開放
free(top -> next);
free(top -> next -> next);
free(top -> next -> next -> next);
return 0;
}
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
質問の文章とプログラムがかみ合っていないということに気づいていない時点でいかがなものかと思うね.
まあ, アルゴリズムをしっかりきっちり書いてくれるのであれば, 対応する関数を書くこと自体はやぶさかではないが.
No.2
- 回答日時:
大学の必須課題8-4ですよね?
http://www.prog2bkc.net/
から、
ヒントスライドPDF:
http://www.prog2bkc.net/hint_pdf
へ飛んで、prog2_ex08_リストを用いたスタックとキュー.pdfを参照したらいいと思いますよ。
大学からの注意事項もありますけど、こちらもどうぞ。
http://www.prog2bkc.net/info/buzhengxingweiyahoo …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# ref引数のnull判定
-
構造体のリスト削除
-
isset — 変数が宣言されている...
-
双方向リストのバブルソートに...
-
Aの値からBの値を除するとは??
-
信頼区間の1.96や1.65ってどこ...
-
Enterキーを押されたら次の処理...
-
#define _CRT_SECURE_NO_WARNIN...
-
「Aに対するBの割合」と「Aに対...
-
エクセルで可視セルにのみ値貼...
-
iconv_open失敗
-
20'(角度)の計算がわかりま...
-
構文エラー";"が型の前にあり...
-
エラー 添字が付けられた値が、...
-
2÷3などの余りについて
-
既定のコンストラクタがありま...
-
複数桁10進数の*桁目だけを抽出...
-
配列を関数に渡す方法
-
2曲同時再生するにはどうした...
-
C言語 エラーの原因がわからな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報