以下のを教えてください。
リストで表現されたキューに対して、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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# leetcode21 1 2022/04/21 11:53
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- C言語・C++・C# C言語 leetcode21 Merge Two Sorted Lists 2 2022/04/24 19:35
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バグの原因がわかりません(c言...
-
C言語 dequeue
-
リスト構造
-
C言語 二分木探索
-
【C言語教えてください】sin波...
-
2÷3などの余りについて
-
C言語についてです。 アスタリ...
-
へんな現象
-
EXCELの分散分析表のP-値が....
-
*をユーザーが入力した数字の数...
-
「Aに対するBの割合」と「Aに対...
-
信頼区間の1.96や1.65ってどこ...
-
ガンマ変換 C言語でプログラ...
-
Aの値からBの値を除するとは??
-
C言語で内積、、、わかりません。
-
std::set<int> で、ある値が何...
-
三角比の俯角の計算
-
C言語の質問です
-
三角比の問題です。
-
Enterキーを押されたら次の処理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
InvokeMemberメソッドとは何を...
-
構造体のリスト削除
-
C# ref引数のnull判定
-
双方向リストのバブルソートに...
-
コールバック関数はnullになら...
-
今度はdoubly linked listの問...
-
C♯ 2段構造のcontextMenuStrip?
-
「Nz」は何て読むのでしょうか?
-
C#でのEXCEL出力に関して
-
空のカラムを挿入
-
ポインタを使った連結リストへ...
-
バブルソートを使って文字列を...
-
ソートを自作
-
API 録音 MCI
-
ばばぬきプログラムについて
-
C言語 dequeue
-
マイナスからプラスへ転じた時...
-
Enterキーを押されたら次の処理...
-
2÷3などの余りについて
-
C言語での引数の省略方法
おすすめ情報