数据结构---C语言之队列的链式表示和实现(链队列)
2017-10-28 14:21
567 查看
#define MAXSIZE 100 #define QElemType int #include<stdio.h> #include<stdlib.h> #include<math.h> #include<stdbool.h> #include<Windows.h> typedef struct { QElemType *base; int front; int rear; }SqQueue; int InitQueue(SqQueue *Q); //构造一个空队列 int QueueLength(SqQueue Q); //返回队列长度 int EnQueue(SqQueue *Q, QElemType e); //插入元素e为Q的新的队尾元素 int DeQueue(SqQueue *Q, QElemType *e);//若队列不空,删除Q的队头元素,用e返回其值,并返回1 void TravelQueue(SqQueue Q); //遍历队列 void ClearQueue(SqQueue *Q); //清空队列 void DestroyQueue(SqQueue *Q); //销毁队列 int main() { int i; SqQueue Q; srand((int)time(0)); InitQueue(&Q); //初始化链队列 for(i=0;i<10;i++) EnQueue(&Q,rand()%100); printf("size of it:%d\n", QueueLength(Q)); TravelQueue(Q); DestroyQueue(&Q); TravelQueue(Q); Sleep(1000); } int InitQueue(SqQueue *Q) { Q->base = (QElemType*)malloc(MAXSIZE * sizeof(QElemType)); if (!Q->base) return 0; Q->front = Q->rear = 0; return 1; } int QueueLength(SqQueue Q) { return (Q.rear - Q.front + MAXSIZE) % MAXSIZE; } int EnQueue(SqQueue *Q, QElemType e) { if ((Q->rear + 1) % MAXSIZE == Q->front) { printf("队列满\n"); return 0; } Q->base[Q->rear] = e; Q->rear = (Q->rear + 1) % MAXSIZE; //保证rear在1-maxsize范围内 return 0; } int DeQueue(SqQueue *Q, QElemType *e) { if (Q->rear == Q->front) { printf("队列空\n"); return 0; } *e = Q->base[Q->front]; Q->front = (Q->front + 1) % MAXSIZE; //保证front在1-maxsize范围内 return 1; } void TravelQueue(SqQueue Q) { if (Q.front == Q.rear) { printf("队列空\n"); return 0; } int i = Q.front; while (i < Q.rear) { printf("%d\t", Q.base[i]); i++; } printf("\n"); } void ClearQueue(SqQueue *Q) { Q->front = Q->rear = 0; } void DestroyQueue(SqQueue *Q) { if (Q->base) free(Q->base); Q->base = NULL; Q->front = Q->rear = 0; }
相关文章推荐
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- 数据结构学习笔记-队列的链式存储(C语言实现)
- 数据结构实现链式队列(C语言)
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
- 数据结构 c语言实现链式循环队列(输入数字入队 输入字母出队)
- 数据结构之队列的链式表示和实现
- 数据结构C语言实现之链式队列的6种算法代码
- 数据结构---C语言栈的链式表示与实现
- (C语言)队列的链式实现(数据结构十一)
- (C语言)队列的链式实现(数据结构十一)
- 队列的链式表示和实现(数据结构)
- C语言单链队列的表示与实现实例详解
- 数据结构——队列的链式实现(C语言)
- 数据结构之链式队列go言语实现
- 数据结构之C++实现链式队列(LinkQueue)(无主函数)
- c语言实现数据结构中的队列
- 循环队列——队列的顺序表示与实现(c语言)
- 数据结构学习----线性表的链式表示之升序排序的单链表(Java实现)
- 队列在Java类库中的链式表示及实现——LinkedList
- 队列(C语言实现,基于链式结构)