データ構造とアルゴリズムについての質問です.
Queue(待ち行列)に関する以下の課題についてわかる方ご教授願います.
課題内容は,
①CountをもつQueueのプログラムを配列で作成せよ.
②Queueのプログラムを連結リストで作成せよ.
の2つです.
CountなしのQueueを配列を用いて作ったプログラムはわかっているので,そこに付け加える形で回答願いたいです.そのプログラムを以下に示しておきます.
struct queue {
int *bd;
int hd;
int tl;
int mx;
char *id;
};
void error_id (char *frm, char *id)
{
fprintf(stderr, frm, id);
exit(1);
}
struct queue *newqueue (int maxsize, char *name)
{
struct queue *q;
if ((q = (struct queue *)malloc(sizeof(struct queue))) == NULL)
error_id("malloc for %s\n", name);
if ((q->bd = (int *)malloc(maxsize * sizeof(int))) == NULL)
error_id("malloc for %s's body\n", name);
q->hd = q->tl = 0;
q->mx = maxsize;
q->id = name;
return q;
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
コール元がないのでなんとも言えませんが…
>struct queue *newqueue (int maxsize, char *name)
>q->id = name;
nameがmalloc()などで確保された領域でない場合、期待動作にならない…かも知れませんな。
# char name[100];とかの静的領域だとキューの全てで同じアドレスを。
さらに、まず滅多に発生しないでしょうけど、malloc()失敗すると飛ぶかと。
>if ((q = (struct queue *)malloc(sizeof(struct queue))) == NULL)
>error_id("malloc for %s\n", name);
malloc()失敗したのでqにNULLが入ってerror_id("malloc for %s\n", name)をコール。
で、
>if ((q->bd = (int *)malloc(maxsize * sizeof(int))) == NULL)
NULLポインタ参照で落ちる…かと。
struct queueはキューに登録するアイテム…なんでしょうかね?
連結リストにするにはリスト構造の為のメンバが無いみたいですけど。
# 配列ならそんなメンバは不要ですけども。
No.1
- 回答日時:
「CountをもつQueueのプログラムを配列で作成せよ.」ってどういうことなんだろうか. 「Count」がなんなのかさっぱりわか
らんし, プログラムを「配列で作成」ってのはどうなっていることを求めているんだろう.お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
C#で構造体の配列を持った構造...
-
構造体のextern方法
-
配列の要素数に変数を入れたい...
-
C言語を使って、ファイルの読み...
-
[C++/CLI]マネージコードで配列...
-
define で 配列
-
配列のアドレス部
-
AfxBeginThread の引数について
-
C言語についてです 5人のテスト...
-
MFCのCArrayを使った二次元配列
-
プログラム 数列の和
-
万年カレンダーについて。
-
bmpやImageの配列を関数の引数...
-
char型配列をint型に代入するには
-
配列のNULL初期化について
-
c言語の自分で数字を入力してサ...
-
C言語において、 配列要素をひ...
-
c言語
-
C#で配列が空かを判定するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
c言語
-
構造体のextern方法
-
define で 配列
-
C#で構造体の配列を持った構造...
-
C言語において、 配列要素をひ...
-
コンボボックスでデフォルト値...
-
2番目の最大値を求める
-
C言語の2次元配列 容量が大き...
-
C#で配列が空かを判定するには?
-
MFCのCArrayを使った二次元配列
-
C言語の課題が出たのですが自力...
-
C言語 ファイルの指定された行...
-
Cのエラー
-
ポインタを使って構造体の配列...
-
配列のアドレス部
-
char型配列をint型に代入するには
-
MFC - ダイアログボックスのPic...
-
C言語から質問です。
おすすめ情報