2013-02-26 37 views
15

Temel olarak bir restoran bekleme kuyruğu için bir kuyruk (bağlantılı liste) uygulamak zorundayız.Enum nasıl kullanılır?

enum'u kullanmak için ekstra puan alıyoruz, ancak daha önce hiç kullanmadım. Merak ediyorum, bunu nasıl kullandığımı görüyor muyum? Ben baktım ama bağlantılı listeleri kullanarak herhangi bir örnek görmedim.

İşte yapısı için talimatlar geçerli:

kodunuzu yazarak, sen bekleme listesinin bağlantılı listesinde düğümler için bir C yapı oluşturmak GEREKİR. Bu veri öğeleri aşağıdakileri içermelidir (gerekirse diğerlerini de içerebilir).

  • grubun adı

  • (gruptaki insan sayısı)

  • in-restaurant durumunu (bir kullanma ekstra puan grubun boyutu belirterek tamsayı değişken enum!)

  • listeye

sonraki düğümünü işaret

restoran durumudur in-yürümek ya

İşte benim yapısı var (bekleme listesinde adını koymak arama vaktinden önce) deriz:

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

çünkü ben soruyorum Ben derleme yaparken bu uyarıyı alıyorum:

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

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

+1

Sorunuz tam olarak nedir? Ödevinizi, aldığınız oluşturma hataları olan kullanıcılara atmayın. Takılı olduğunuz tek bir sorunu saptayın, ardından yardım isteyin. –

+4

@juice - Açıkçası adil bir soru sorduğunuzu ve kendinize cevap vermeye çalıştığı için gereken özeni gösterdiğinizi düşünüyorum. Eski "Latin" deyimiyle ["illegalitimi non carborundum"] (http://en.wikipedia.org/wiki/Illegitimi_non_carborundum);) – paulsm4

cevap

11

Sizin yapı typedef temelde I "Eğer söylediğini Kaydımda bir "status" alanı vardı, "call" değerine veya "wait" değerine sahip olabilirdi. Uyarı temel olarak "hiç bir alanı tahsis etmediniz" diyor.

Olası değişikliği: Burada

enum status {CALL, WAIT}; 

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

fazla bilgi var:

+0

'= CALL' gösterimi nedir? Belki de C ve C++ kafa karıştırıcı mısınız? –

+0

Benim hatam. Düzeltildi. Ben sadece "CALL" veya "WAIT" gibi enum değerlerini "küçük" veya "bekle" durumlarından daha çok tercih ettiğimi söylemek istedim. IMHO ... – paulsm4

+1

Ses tavsiyesi için teşekkürler. İnsanların burada saldırgan olduğunu düşünüyorum çünkü bazı posterler StackOverflow kullanıcılarının ev ödevlerini yapmasını istiyor. Bunu yapmaya çalışmıyorum. Buradaki insanlar bu siteyi unutmak için çok faydalı bir öğrenme aracı olarak kullanılabilir. Enum baktığımı, ancak bağlantılı listeler için net bir örnek olmadığını belirttim. Tekrar teşekkürler. Çok takdir edildi. – juice

6

Sizin enum ya yapısının dışında beyan edilmelidir:

enum Status {call, wait}; 

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

veya yapı içinde bu tür üyesini bildirmek gerekir:

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

veya her ikisi:

enum Status {call, wait}; 

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

Sen de enum Status için typedef yaratabilir.

enum status {call, wait} status; 

ve derleyici karıştırılmamalıdır olmayacak ama iyi olabilir: Ve etiketleri (enum Status olduğu gibi Status) beri yapı üyelerinden bir isim alanları farklıdır, aslında kullanabilirsiniz.

Sıklıkla, insanlar ALL_CAPS'de numaralandırma sabitleri yazar. Bu, #define WAIT 0 ve enum Status { WAIT, CALL }; yerine #define CALL 1 kullanım günlerinden kısmen farklıdır.

+0

Belki de tutuklama niyetindesiniz, akşamdan kalma değil. – tar

+2

Hayır; Bu bir kalıntı - insanlar ondan baş ağrısı olsun. –