我正在定义一个链表,其中结构(第一个)的类型与其他类型不同。第一个节点始终存在。
Type1 -> Type2_1 -> Type2_2 -> Type2_3->etc
我必须能够重新排列Type2元素。例如,我可以:
Type1 -> Type2_3 -> Type2_1 -> Type2_2 -> etc
我尝试这样做的方法是定义双链表。每个Type2元素可以指向下一个Type2,前一个,如果需要,则指向Type1。如果Type2元素位于Type1旁边,则其指向前一个Type2的指针将设置为NULL。
typedef struct Type2{
struct Type2 *next;
struct Type2 *previous;
int isNextToType1;
} Type2;
有没有更好的方法呢?
答案 0 :(得分:2)
typedef struct Type2
{
...
struct Type2 *previous; // This is NULL for the first element
struct Type2 *next; // This is NULL for the last element
} Type2;
typedef struct Type1
{
...
struct Type2* list; // This might be NULL if the list is empty
} Type1;
好像你不需要任何东西。