C 语言实现队列
来源:互联网 发布:origin画图for mac 编辑:程序博客网 时间:2024/05/16 13:51
GCC 5.4 测试
#include <stdio.h>#include <stdlib.h>typedef char ElemType;/** 队列节点*/typedef struct QNode { ElemType data; struct QNode *next;} QNode , *QueuePtr;/** 链接队列*/ typedef struct { QueuePtr front; //队头指针 QueuePtr rear; //队尾指针} LinkQueue;void initQueue(LinkQueue *q) { /*初始化一个空队列*/ q->front = q->rear = (QueuePtr)malloc(sizeof(QNode)); /*创建一个头结点,队头队尾指针指向该结点*/ if( !q->front) { exit(0); /*创建头结点失败*/ } q->front->next = NULL; /*头结点指针域置NULL*/}/* 入队列*/ void EnQueue(LinkQueue *q, ElemType e) { QueuePtr p; p = (QueuePtr)malloc(sizeof(QNode)); /*创建一个队列元素结点*/ if( !q->front) { exit(0); /*创建头结点失败*/ } p->data = e; p->next = NULL; q->rear ->next = p; q->rear = p;}/* 出队列*/ void DeQueue(LinkQueue *q, ElemType *e) { /*如果队列q不为空,删除q的队头元素,用e返回其值*/ QueuePtr p; if(q->front == q->rear) { return; /*队列为空,返回*/ } p = q->front->next; *e = p->data; q->front->next = p->next; if(q->rear == p) { q->rear = q->front; /*如果队头就是队尾,则修改队尾指针*/ } free(p);}void DestroyQueue(LinkQueue *q) { while(q->front) { q->rear = q->front->next; /*q->rear 指向q->front的后继结点*/ free(q->front); /*释放掉q->front*/ q->front = q->rear; /*q->front后移*/ }}/*测试函数*/int main() { ElemType e; LinkQueue q; initQueue(&q); /*初始化一个队列q*/ printf("Please input a string into a queue\n"); scanf("%c",&e); while(e!='@') { EnQueue(&q,e); /*向队列中输入字符串,以@表示结束*/ scanf("%c",&e); } printf("The string into the queue is\n"); while(q.front != q.rear) { /*将队列中的元素出队列,并打印在屏幕上*/ DeQueue(&q,&e); printf("%c",e); } printf("\n"); DestroyQueue(&q); /*销毁队列q*/ return 0;}
0 0
- 队列 C语言实现
- 队列C语言实现
- C语言实现队列
- 队列 c语言实现
- C语言实现队列
- C语言实现队列
- C 语言实现队列
- c语言实现队列
- C语言实现队列
- C语言队列实现
- C语言实现队列
- 队列的C语言实现
- 队列实现文件C语言
- C语言实现链队列
- 循环队列C语言实现
- C语言队列的实现
- c语言队列的实现
- c语言一个队列实现
- Create MyDemoWorld
- CDialog
- 八 多态
- 从零移植uboot 2017 到nuc970(第十九天)
- ns2相关学习——tcl脚本编写(1)
- C 语言实现队列
- Astyle的styles
- linux傻瓜式安装lnmp
- SSH 修改tomcat端口号
- Android使用AlertDialog的信息列表单选、多选对话框
- FireFox火狐浏览器设置不加载图片
- (14)YARN Timeline Server
- (四)主题应用
- 继承