struct इस तरह की लिंक्ड सूची के प्रमुख के रूप में इस्तेमाल किया जाता है:नामित प्रारंभकर्ता का उपयोग करते समय, 'इस' संरचना में पॉइंटर प्राप्त करना संभव है?
struct lista
{
struct lista* next;
struct lista* prev;
};
जब अगले और दोनों अंक पीछे ही struct करने के लिए है, तो सूची खाली है। ,
struct lista my_list = LISTA_INIT_EMPTY(&my_list);
लेकिन वहाँ निम्नलिखित तरीके से एक ही बात करने के लिए कोई रास्ता नहीं है, मैक्रो पैरामीटर के बिना ?:
:#define LISTA_INIT_EMPTY(list) { .next = (list), .prev = (list) }
इस तरह से: निम्नलिखित मैक्रो संरचना आरंभ के लिए इस्तेमाल किया जा सकता
struct lista my_list = LISTA_INIT_EMPTY;
मैं निम्नलिखित की कोशिश की है, लेकिन यह एक संकलन त्रुटि के कारण:
#define LISTA_INIT_EMPTY { .next = &.next, .prev = &.next }
मैं ओपी सभी सूचियों चाहता है, गोलाकार होने के लिए प्रारंभिक खाली एक सहित। यह पूरी तरह से अनुचित नहीं है; अक्सर यह आपकी सूची हैंडलिंग कार्यों में सभी बदसूरत कोने के मामलों को समाप्त करता है। –
'CREATE_EMPTY_LISTA' मूल रूप से ओपी द्वारा उल्लिखित' LISTA_INIT_EMPTY' जैसा ही है। –
हां, लेकिन एक महत्वपूर्ण अंतर के साथ: 'struct lista my_list = LISTA_INIT_EMPTY (& my_list);' आपको चर के नाम को दोहराने के लिए मजबूर करता है, जो अच्छा नहीं है और काफी त्रुटि प्रवण है। 'CREATE_EMPTY_LISTA (my_list); 'आपको इसे दोहराने की अनुमति नहीं देता है। बेशक – Shlublu