2013-02-26 45 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