アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のを教えてください。

リストで表現されたキューに対して、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件)

質問の文章とプログラムがかみ合っていないということに気づいていない時点でいかがなものかと思うね.



まあ, アルゴリズムをしっかりきっちり書いてくれるのであれば, 対応する関数を書くこと自体はやぶさかではないが.
    • good
    • 0

大学の必須課題8-4ですよね?


http://www.prog2bkc.net/
から、
ヒントスライドPDF:
http://www.prog2bkc.net/hint_pdf
へ飛んで、prog2_ex08_リストを用いたスタックとキュー.pdfを参照したらいいと思いますよ。

大学からの注意事項もありますけど、こちらもどうぞ。
http://www.prog2bkc.net/info/buzhengxingweiyahoo …
    • good
    • 2

なにを教えてほしいのか書け


その問題がなんだ
そのソースコードがなんだ

どちらにしろ、宿題は自分でやるもんだけどね
    • good
    • 2
この回答へのお礼

関数dequeueの中身を教えて欲しいんです。

enqueue関数で幾つかの文字をキューに入れた後に、print_queue_list関数によってキューの中身を確認を出力。その後、作成したdequeue関数を呼び出し、dequeueされた文字を出力。そして、dequeueした文字を出力したいのです。

お礼日時:2016/11/30 00:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!