队列的线性存储和链式存储实现
来源:互联网 发布:常用数据结构和算法下 编辑:程序博客网 时间:2024/06/08 02:18
队列是只允许在队尾插入元素,在队头删除元素的线性表。它有两种存储结构,即是顺序存储和链式存储结构。
链式存储结构实际上是一个同时带有首指针和尾指针的单链表。实现如下:
#include<iostream>using namespace std;const int MaxSize=20;typedef struct{int data[MaxSize];int font,rear;}SqQueue;void InitQueue(SqQueue &sq){sq.rear=sq.font=0;}int EnQueue(SqQueue &sq,int x)//入队{if((sq.rear+1)%MaxSize==sq.font)return 0; else{ sq.data[sq.rear]=x;sq.rear=(sq.rear+1)%MaxSize;//队头循环加1return 1;}}int DeQueue(SqQueue &sq,int &x) //出队列,将值保存在x当中{if(sq.rear==sq.font)//队列为空return 0;else{x=sq.data[sq.font];sq.font=(sq.font+1)%MaxSize;return 1;}}int IsEmpty(SqQueue &sq) //判断队列是否为空{if(sq.rear==sq.font)return 1;else return 0;}int GetHead(SqQueue sq,int &x) //取队头元素{if(sq.rear==sq.font)//队列为空return 0;else x=sq.data[(sq.font+1)%MaxSize];return 1;}/*链式队列*/typedef struct node{int data;struct node *next;}SNode;typedef struct {SNode *font,*rear;}LQueue;void InitQueue(LQueue * &lq){lq=(LQueue *)malloc(sizeof(LQueue));lq->font=lq->rear=NULL;//初始情况}void EnQueue(LQueue * &lq,int x){SNode *s;s=(SNode *)malloc(sizeof(SNode));s->data=x;s->next=NULL;//新节点的初始化if(lq->font==NULL&&lq->rear==NULL) //若原来队列为空{lq->font=s;lq->rear=s;}else{lq->rear->next=s;lq->rear=s; //将s插入到队列尾部}}int DeQueue(LQueue *&lq,int &x){SNode *p;if(lq->font==NULL)return 0;else{x=lq->font->data;p=lq->font;//保存要删除的结点if(lq->font==lq->rear) //判断是否只有一个节点{lq->font=lq->rear=NULL;}elselq->font=lq->font->next;}free(p);return 1;}int QueueEmpty(LQueue *&lq)//判断队列是否为空{if(lq->font==NULL&&lq->rear==NULL)return 1;else return 0;}void main(){ SqQueue sq;int x;InitQueue(sq);for(int i=0;i<10;i++){EnQueue(sq,i);cout<<i<<" ";} cout<<endl;for(int j=0;j<10;j++){DeQueue(sq,x);cout<<x<<" ";}cout<<endl; cout<<"/***********链式队列**************/"<<endl;LQueue *lq;InitQueue(lq);for(int i=0;i<20;i++){EnQueue(lq,i);cout<<i<<" ";} cout<<endl;for(int j=0;j<20;j++){DeQueue(lq,x);cout<<x<<" ";} }
复制搜索
复制搜索
- 队列的线性存储和链式存储实现
- 线性表的链式存储和实现
- 线性表的链式存储和实现
- 线性表的顺序存储实现和链式存储实现
- 队列的顺序存储实现和链式存储实现
- 线性表(List)---队列的链式存储
- 队列的顺序存储和链式存储
- 队列链式存储实现
- Java版线性表的链式存储和实现
- 线性表的线性存储和链式存储
- 【线性表一:】两种存储结构的代码实现:顺序存储和链式存储
- PHP实现线性表的链式存储
- Java实现链式存储的线性表
- 线性结构--->栈的链式存储实现
- 线性表的链式存储与实现
- 线性表的链式存储实现c++
- 链式队列的存储....
- 队列的链式存储
- 摩托罗拉 开发过程中 activity listview 等样式问题
- 汇编的jl、jg与jb、ja
- make bzImage的过程
- SCVMM 2012增加Hyper-V主机失败 错误(2912)
- hdu 1597 找规律
- 队列的线性存储和链式存储实现
- 形式逻辑与辩证法
- linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]
- C语言实现的密码输入功能
- 读书笔记:数组最大子序列问题 及 联机算法
- SGU 499:Greatest Greatest Common Divisor
- 服务器数据库系列 - Memcache的使用和协议分析详解
- ios编程引入第三方包,不支持arc解决办法
- C# TCP实现多个客户端与服务端 数据 与 文件的传输