2013-02-26 6 views
15

Grundsätzlich müssen wir eine Warteschlange (verkettete Liste) für eine Restaurantwarteschlange implementieren.So verwenden Sie enum in C

Wir bekommen extra Punkte für die Verwendung enum, aber ich habe es noch nie zuvor verwendet. Ich frage mich, sieht das richtig aus, wie ich es benutze? Ich habe es nachgeschlagen, habe aber keine Beispiele mit verknüpften Listen gesehen.

Hier ist die Anweisungen für unsere Struktur:

Wenn Ihr Code schreiben Sie eine C-Struktur für die Knoten in der verknüpften Liste der Warteliste erstellen muss. Diese Datenelemente müssen Folgendes enthalten (und ggf. weitere enthalten).

  • der Name der Gruppe

  • die ganzzahlige Variable, die die Größe der Gruppe (Anzahl der Personen in der Gruppe)

  • den in-Restaurant-Status (zusätzliche Punkte für die Verwendung eines Spezifizierungs enum!)

  • ein Zeiger auf den nächsten Knoten in der Liste

Das Restaurant Status walk-in oder Call-in (vor der Zeit rufen Namensliste setzen auf der Warteliste)

Hier wird die Struktur von mir ist:

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

ich, weil ich frage erhalten diese Warnung, wenn ich kompilieren:

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

http://www.yolinux.com/TUTORIALS/C++Enum.html – congusbongus

+1

Was genau ist Ihre Frage? Werfen Sie Ihre Aufgabe nicht einfach auf Leute mit Build-Fehlern, die Sie bekommen. Bestimmen Sie ein Problem, bei dem Sie stecken bleiben, und bitten Sie um Hilfe. –

+4

@juice - Ich denke wirklich, dass Sie eine faire Frage gestellt haben, und dass Sie die Due-Diligence aufrichtig getan haben, um es selbst zu beantworten. Machen Sie sich Mut in der alten "lateinischen" Phrase ["illegitime non carborundum"] (http://en.wikipedia.org/wiki/Illegitimi_non_carborundum);) – paulsm4

Antwort

11

Ihre struct typedef im Grunde sagen: „Wenn ich hatte ein "Status" -Feld in meinem Datensatz, könnte es den Wert "Anruf" oder den Wert "warten" haben. Die Warnung besagt grundsätzlich "Sie haben nie ein Feld zugewiesen".

Mögliche Änderung:

enum status {CALL, WAIT}; 

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

Hier weitere Informationen:

+0

Was ist die '= CALL' Notation? Verwechselst du vielleicht C und C++? –

+0

Mein schlechtes. Korrigiert. Ich wollte nur sagen, dass ich im Allgemeinen Enum-Werte wie "CALL" oder "WAIT" bevorzuge als "Call" oder "Wait" in Kleinbuchstaben. IMHO ... – paulsm4

+1

Danke für den fundierten Rat. Ich gehe davon aus, dass die Leute hier aggressiv sind, weil einige Poster nach StackOverflow-Benutzern fragen, um ihre Hausaufgaben zu machen. Ich versuche das nicht. Die Leute hier vergessen, dass diese Seite für ein sehr nützliches Lernwerkzeug verwendet werden kann. Ich habe festgestellt, dass ich nachschlagen, aber keine klaren Beispiele für verknüpfte Listen. Danke noch einmal. Sehr geschätzt. – juice

6

Ihre enum muss entweder außerhalb der Struktur deklariert werden:

enum Status {call, wait}; 

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

oder müssen ein Mitglied dieser Art innerhalb der Struktur deklarieren:

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

oder beides:

enum Status {call, wait}; 

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

Sie könnten ein typedef für die enum Status erstellen zu.Und da die Tags (wie Status in enum Status) sind in einem anderen Namespace von Strukturelementen, könnten Sie tatsächlich nutzen:

enum status {call, wait} status; 

und der Compiler wird nicht verwechselt werden, aber sie kann durchaus sein.

Sehr oft schreiben Leute Aufzählungskonstanten in ALL_CAPS. Dies ist teilweise ein Kater aus den Tagen der Verwendung #define WAIT 0 und #define CALL 1 anstelle von enum Status { WAIT, CALL };.

+0

Vielleicht meintest du Holdover, nicht Kater. – tar

+2

Nein; Es ist ein Kater - Leute bekommen Kopfschmerzen von allem. –