如何在一个结构体中定义一个链表?

时间:2021-01-02 19:07:56
比如我需要定义如下一个结构体,在这个结构体中需要包含一个链表的结构,如何实现呢?

typedef struct xxx
{
   int a[10];
   /*以下定义一个链表结构,可以在这个链表中进行查找,删除,添加结点操作*/
   struct Node* pNode = NULL;
}xxx_struct;
这样定义可以吗?以后在访问这个结构时,判断pNode是否等于NULL,如果等于NULL,就创建链表,并且让设置头指针,如果pNode不等于NULL,表面该链表已经创建,且至少存有一个结点,以后需要插入的结点按照某种方式插入和删除就可以了.只是最初的想法,请各位指教!谢谢!

5 个解决方案

#1


可以。

#2


一般的链表会制作么?

这里就是把 第一个 head 节点放在 pNode 这里,
后面的后续节点还是一样的 ...

#3


其实我觉得你是否有必要把a、链表和pNode放在一个结构中,拆开来似乎还更醒目一点。(当然如果你后面要把这些信息当作一个整体来处理,比如它也有一个链表或数组之类的就另当别论了)
pNode就保存链表的头指针,链表为空时是NULL,不空则指向下一个节点,所有我感觉你可以这样定义:
int a[10];
typedef struct _Node{
       ...
struct _Node *next;
}Node;
Node *head=NULL;

当然如果你需要定义在一个结构中也是一样的:
typedef struct xxx
{
   int a[10];
   struct Node{
       ...
    struct Node *next;
   }
   struct Node* pNode = NULL;
}xxx_struct;

#4


typedef struct node{
     struct node *next;
}obj
typedef struct xxxx{
   struct node obj;
}

  用node建链表...xxxx里面不就放了个链表吗?...是否这样?

#5


看了大家的意见,是不是可以搞成这样子:
先定义一个双向链表的结构体
typedef struct Node
{
  Node* pPre;
  Node* pNext;
  Struct YYY yObj;/*存储另外一些参数*/
}Node_Struct;

然后再定义:
typedef struct xxx
{
int a[10];
/*以下定义一个链表结构,可以在这个链表中进行查找,删除,添加结点操作*/
struct Node* pNode;/*定义链表头结点的结构,以后进行链表操作*/
}xxx_struct;

大家看是否可行哦,谢谢!

#1


可以。

#2


一般的链表会制作么?

这里就是把 第一个 head 节点放在 pNode 这里,
后面的后续节点还是一样的 ...

#3


其实我觉得你是否有必要把a、链表和pNode放在一个结构中,拆开来似乎还更醒目一点。(当然如果你后面要把这些信息当作一个整体来处理,比如它也有一个链表或数组之类的就另当别论了)
pNode就保存链表的头指针,链表为空时是NULL,不空则指向下一个节点,所有我感觉你可以这样定义:
int a[10];
typedef struct _Node{
       ...
struct _Node *next;
}Node;
Node *head=NULL;

当然如果你需要定义在一个结构中也是一样的:
typedef struct xxx
{
   int a[10];
   struct Node{
       ...
    struct Node *next;
   }
   struct Node* pNode = NULL;
}xxx_struct;

#4


typedef struct node{
     struct node *next;
}obj
typedef struct xxxx{
   struct node obj;
}

  用node建链表...xxxx里面不就放了个链表吗?...是否这样?

#5


看了大家的意见,是不是可以搞成这样子:
先定义一个双向链表的结构体
typedef struct Node
{
  Node* pPre;
  Node* pNext;
  Struct YYY yObj;/*存储另外一些参数*/
}Node_Struct;

然后再定义:
typedef struct xxx
{
int a[10];
/*以下定义一个链表结构,可以在这个链表中进行查找,删除,添加结点操作*/
struct Node* pNode;/*定义链表头结点的结构,以后进行链表操作*/
}xxx_struct;

大家看是否可行哦,谢谢!