17

基本的に、レストランの待ち行列のキュー (リンクされたリスト) を実装する必要があります。

使用すると余分なポイントが得られますenumが、これまで使用したことがありません。私はこれをどのように使用しているか疑問に思っていますか?私はそれを調べましたが、リンクされたリストを使用した例を見たことがありません.

構造の手順は次のとおりです。

コードを記述するときは、待機リストのリンク リスト内のノードの C 構造体を作成する必要があります。これらのデータ項目には以下が含まれている必要があります (必要に応じて他の項目を含めることもできます)。

  • グループの名前

  • グループのサイズ (グループ内の人数) を指定する整数変数

  • レストラン内ステータス (列挙型を使用するための追加ポイント!)

  • リスト内の次のノードへのポインタ

レストランのステータスはウォークインまたはコールインです(ウェイティングリストに名前を入れるために事前に電話してください)

これが私の構造です:

typedef struct restaurant
{
    char name[30];
    int groupSize;
    enum status{call, wait};
    struct restaurant *nextNode;
}list;

コンパイル時に次の警告が表示されるため、質問しています。

lab6.c:11:28: warning: declaration does not declare anything [enabled by default]
4

2 に答える 2

11

struct typedefは基本的に、「レコードに「status」フィールドがある場合、値は「call」または値は「wait」である可能性があります。警告は基本的に「フィールドを割り当てたことがない」と言っています。

考えられる変更:

enum status {CALL, WAIT};

typedef struct restaurant
{
    char name[30];
    int groupSize;
    enum status my_status;
    struct restaurant *nextNode;
}list;

詳細は次のとおりです。

于 2013-02-26T01:56:57.553 に答える
7

構造enum体の外で宣言する必要があります。

enum Status {call, wait};

typedef struct restaurant
{
    char name[30];
    int groupSize;
    struct restaurant *nextNode;
} list;

または、構造内でその型のメンバーを宣言する必要があります。

typedef struct restaurant
{
    char name[30];
    int groupSize;
    enum Status {call, wait} status;
    struct restaurant *nextNode;
} list;

または両方:

enum Status {call, wait};

typedef struct restaurant
{
    char name[30];
    int groupSize;
    enum Status status;
    struct restaurant *nextNode;
} list;

の typedef も作成できますenum Status。また、タグ ( Statusinなどenum Status) は構造体メンバーとは異なる名前空間にあるため、実際には次を使用できます。

enum status {call, wait} status;

コンパイラが混乱することはありませんが、混乱する可能性があります。

多くの場合、人々は列挙定数を ALL_CAPS で記述します。これは、 の代わりに#define WAIT 0andを使用していた時代の影響の一部です。#define CALL 1enum Status { WAIT, CALL };

于 2013-02-26T02:01:26.060 に答える