2013-03-13 3 views
0

Правильно ли это процедура объявления двусвязного списка внутри структуры. Я использую структуру для чтения в текстовом файле, если это имеет какое-либо значение.Объявление дважды связанного списка в структуре

#define MAX 20 
//struct to order contactList 
struct contact 
{ 
    string firstName[MAX],lastName[MAX],email[MAX],companyName[MAX]; 
    long phoneNum[MAX]; 
    struct listelement *link 
    struct node *next; 
    struct node *prev; 

}; 
+1

Скомпилирует? Это всегда хорошее начало проверки правильности. –

+1

что такое 'listelement' и' node'? – FatalError

+1

@SteveTownsend Только так же, как не горит, это хорошее начало проверки здоровья. – delnan

ответ

4

Наверное, нет. Обычно вы используете struct contact *next; struct contact *prev;, так как элементы в списке (возможно) struct contact, а не struct node.

Следовательно, я ожидал увидеть:

#define MAX 20 
//struct to order contactList 
struct contact 
{ 
    string    firstName[MAX]; 
    string    lastName[MAX]; 
    string    email[MAX]; 
    string    companyName[MAX]; 
    long    phoneNum[MAX]; /* 20 phone numbers per contact — wow! */ 
    struct listelement *link;    /* Semi-colon added. What is this for? */ 
    struct contact  *next; 
    struct contact  *prev; 
}; 

электронной почты элемент структуры является слишком коротким (мой основной адрес электронной почты не будет соответствовать, например, вам нужно 32 байт, по крайней мере, я предлагать). Это очень много телефонных номеров для одного контакта. Кроме того, long не сохранит все 10-значные номера телефонов.

Непонятно, для чего нужен элемент link. По-видимому, это часть односвязного списка, в котором участвуют эти структуры.

Смежные вопросы