指针是学习数据结构的基础,,c语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。
同时数据结构的实现大部分都离不开指针。
最近实现队列本来以为十拿九稳,没想到怎么都调不过。
队列定义
typedef struct Queue
{
struct QueNode * _leader;
struct QueNode * _tail;
}Queue;
节点定义
typedef struct QueNode
{
Quetypedef data;
struct QueNode *_next;
}QueNode;
初始化
void QueueInit(Queue *pq)
{
assert(pq);
pq->_leader=pq->_tail = NULL;
}
插入队列
上面的都能实现,但是到插入就有问题了,这是我开始时候的代码
void PushQueue(Queue *pq,Quetypedef x)
{
if(pq->_leader == NULL)
{
pq->_leader-_data = pq->_tail->_data = x;
}
else
{
pq->_tail->_next = x;
pq->_tail = pq->_tail->_next;
}
}
结果程序总是崩溃,但是我的逻辑上是没有问题的,插入数据到一个队列,如果队列为空则让整个队列的头和尾都为这个值,否则头节点不动,尾节点向后移动。
后来才发