队列的基本操作
来源:互联网 发布:希尔伯特矩阵 matlab 编辑:程序博客网 时间:2024/04/26 22:52
//队列的基本操作//队列只用一次动态分配内存,也就是说在一个内存单元里存储元素,所以要用到数组存储//有一些小细节要注意#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Queue{int *base;//设为int是在后面的赋值中起作用int len;int front;int rear;}QUEUE,*pQueue;void init(pQueue pQ,int len); //初始化int in(pQueue pQ); //入列void out(pQueue pQ,int *val); //出列void printqueue(pQueue pQ); //打印队列bool Is_empty(pQueue pQ); //判断为空bool Is_full(pQueue pQ); //判断为满int main(){//pQueue q;//会产生野指针 QUEUE q; int len1,num=0;int val;//----------------printf("请输入要存储几个元素:");scanf("%d",&len1);init(&q,len1);while (len1){ if(!in(&q)) break;}printqueue(&q);//----------------printf("输入要出列几位元素:");scanf("%d",&num);printf("出列元素为:\n");while (num--){ out(&q,&val); printf("%d",val);}printf("\n");//---------------printqueue(&q);return 0;}void init(pQueue pQ,int len){pQ->base=(int *)malloc(sizeof(Queue)+sizeof(int)); //不可以用(pQueue) malloc 类型转换出问题了。if (pQ->base== NULL){printf("分配内存失败\n");exit(-1);} pQ->front=pQ->rear=0;pQ->len=len;}int in(pQueue pQ){if(Is_full(pQ)){printf("队列已满\n");return 0;}printf("输入入列元素:");int val;scanf("%d",&val);pQ->base[pQ->rear]=val;pQ->rear++; return 1;}void out(pQueue pQ,int *val){ if (Is_empty(pQ)){ printf("队列为空\n"); return ;} *val=pQ->base[pQ->front]; pQ->front++;}void printqueue(pQueue pQ){if (Is_empty(pQ)){printf("队列为空\n");return ;}int t=pQ->front; printf("列元素为:");while (t != pQ->rear){ printf("%d",pQ->base[t]); t++;}printf("\n");}bool Is_full(pQueue pQ){ return (pQ->rear+1)%pQ->len==pQ->front;}bool Is_empty(pQueue pQ){ return pQ->front==pQ->rear;}
0 0
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作!
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 装饰者模式
- 单例模式
- java nio(reactor, selector, selectionKey)
- Cocos2d-js____对象池的使用
- jquery的ajax跨域调用json
- 队列的基本操作
- JSP调用存储过程
- web应用国际化问题
- 搬家后关于选择花草问题的分析
- 第一节 常用组件 之 Filter 概述
- 搬家后发现物品遗失,谁负责、谁之过?
- JAVA再学习-第六章对象,类,包和接口
- 基础概念之二级制乘除法
- 01-SQL基本语句