数据结构队列问题:为什么链队 要分两个结构体来定义

数据结构队列问题:为什么链队 要分两个结构体来定义?在前边无论是学到的顺序表,还是单链表,还是链栈都是只定义了一个结构体,实在不明白,为什么链队要定义两个结构体?

结构体(一)

typedef struct qnode
{
int data;
struct qnode *next;
} QNode; /*链队结点类型*/

(结构体二)

typedef struct
{
QNode *front,*rear;
} QuType; /*链队类型*/

因为链队结构是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。每个元素必然按照进入的次序离队,所以又把队列称为先进先出表。
链式队列存储结构也是通过由结点构成的单链表实现的。
在单链表中可以在表中的任何位置插入数据,不过在链队中,只能从末尾插入数据,从起始处删除。所以就需要一个结构来定义下一个节点的位置。
你可以将单链表理解为允许松散的队伍,它是允许插队的。
链队是有人管理的队伍,它有严格的要求,有一个管理者,不允许插队,管理者控制着队伍的进出。
一个结构体是管理者,一个结构体是队伍的起始和结束位置。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-22
typedef struct
{
QNode *front,*rear;
} QuType; /*链队类型*/

这个链表头吧,没有数据,只是作为链表的头追问

那为什么不将这两个结构体定义在一块哪?我这地方不大理解?麻烦了?另外第一个结构体与链表的头没关系吗?
比如:
typedef struct qnode
{
int data;
struct qnode *next,*front,*rear;
} QNode;

相似回答