记录一下C语言实现的链队列代码,供大家参考,具体内容如下
# include# include # include typedef int ElemType;//链队列的结点定义 typedef结构节点{ ElemType val; 结构节点*下; }QueueNode;//链队列的定义,包含队头指针和队尾指针 typedef struct队列{ QueueNode *前; QueueNode *后方; }LinkedQueue;//初始化队列 LinkedQueue * initQueue () { LinkedQueue *队列=(LinkedQueue *) malloc (sizeof (LinkedQueue)); 队列→前=(QueueNode *) malloc (sizeof (QueueNode)); 队列→→前下=零; 队列→后方=队列→前线; }//元素入队 空队列(LinkedQueue *队列,ElemType elem) { QueueNode *节点=(QueueNode *) malloc (sizeof (QueueNode)); 节点→val=elem; 节点→下=零; 队列→后→下=节点; 队列→后方=节点; }//队列是否为空 bool isQueueEmpty (LinkedQueue *队列){ 返回队列→==队列前面→后方; }//元素出队 ElemType出列(LinkedQueue *队列){ 如果(! isQueueEmpty(队列)){ QueueNode * p=队列→前线; 队列→前=p→下; ElemType e=队列→→面前val; 自由(p); 返回e; } 返回NULL; } int main () { LinkedQueue *队列=initQueue (); int我; (我=0;我& lt;20;我+ +){ 排队(队列,我); } 而(! isQueueEmpty(队列)){ printf("出列:% d \ n ",出列(队列)); } 返回0; }
需要注意的是:
-
<李>初始化队列时,队头和队尾都指向同一个结点(头结点,不存储数据);李>
<李>判断队列是否为空,即判断队头指针和队尾指针是否相同,李>
<李>队头元素是当前面前指针下结的点中的值李>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。