2013-02-26 74 views
15

基本上我們必須爲一個餐館等待隊列實現一個隊列(鏈表)。如何在C中使用枚舉

我們得到使用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] 
+0

http://www.yolinux.com/TUTORIALS/C++Enum.html – congusbongus 2013-02-26 01:52:09

+1

你的問題到底是什麼?不要只把你的任務分配給你遇到構建錯誤的人。找出卡住的單一問題,然後尋求幫助。 – 2013-02-26 01:53:15

+4

@juice - 我真的認爲你已經提出了一個公平的問題,並且你已經真誠地做了盡職調查,試圖自己回答。在舊的「拉丁語」短語[「illegitimi non carborundum」](http://en.wikipedia.org/wiki/Illegitimi_non_carborundum);) – paulsm4 2013-02-26 01:59:23

回答

11

你的結構類型定義基本上是說「如果我在我的記錄中有一個「狀態」字段,它可以具有「呼叫」值或「等待」值。警告基本上是說「你從來沒有分配過一個領域」。

可能的變化:

enum status {CALL, WAIT}; 

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

下面是詳細信息:

+0

'= CALL'符號是什麼?你可能會混淆C和C++嗎? – 2013-02-26 02:09:13

+0

我的不好。糾正。我只想說,我通常更喜歡像「CALL」或「WAIT」這樣的枚舉值,而不是小寫的「call」或「wait」。恕我直言... – paulsm4 2013-02-26 02:20:03

+1

感謝您的聲音建議。我認爲人們在這裏是積極的,因爲一些海報要求StackOverflow用戶做他們的功課。我並沒有試圖這樣做。這裏的人往往會忘記這個網站可以用於一個非常有用的學習工具。我已經說過,我查了一下枚舉,但是鏈表沒有清晰的例子。再次感謝。非常感激。 – juice 2013-02-26 02:27:30

6

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; 

您可以創建爲enum Status過一個typedef。由於代碼(如Statusenum Status)是從結構體成員不同的命名空間,你可以實際使用:

enum status {call, wait} status; 

,編譯器不會被迷惑,但你很可能是。

很多時候,人們在ALL_CAPS中編寫枚舉常量。這部分是使用#define WAIT 0#define CALL 1而不是enum Status { WAIT, CALL };的日子。

+0

也許你的意思是堅持,而不是宿醉。 – tar 2016-03-02 22:03:59

+2

否;這是一個宿醉 - 人們都會因此而頭痛。 – 2016-03-02 22:04:42