队列的链式表示和实现
来源:互联网 发布:tracert 路由节点优化 编辑:程序博客网 时间:2024/05/02 02:57
/*队列的链式表示和实现 (带头结点的链式队列)*/#include<stdio.h>//定义 typedef struct QNode{int data;struct QNode *next;}QNode,*QueuePtr;typedef struct{QueuePtr front;QueuePtr rear;}LinkQueue;/*初始化:算法思想:生成一个头结点,是队头指针和队尾指针都指向该头结点,并将头结点的指针域置空。 */ int InitQueue(LinkQueue &Q){//构造一个空队列 Q.front=Q.rear=new QNode;if(!Q.front){return 0;//没有生成头结点,初始化失败. }Q.front->next=NULL;return 1; }/*入队操作:算法思想:首先为入队的元素分配一个新的结点,将新元素插入到队尾;并修改队尾指针的值. */ int EnQueue(LinkQueue &Q,int e){//插入e为Q的新的队尾元素struct QNode *s;s=new QNode;if(!s){return 0;//存储分配失败 }s->data=e;s->next=NULL;Q.rear->next=s;Q.rear=s;//修改尾指针 return 1;}/*链队出队算法:首先判断队列是否为空,若空返回0;否则取出Q的队头元素,用e返回其值,修改指针。另外考虑当队列的最后一个元素被删除时,队列的尾指针就消失了需要修改尾指针,让其指挥头结点. */int DeQueue(LinkQueue &Q,int &e){struct QNode *p;if(Q.front==Q.rear){return 0;//队列为空 }p=Q.front->next;//指针p指向队列的第一个元素e=p->data;Q.front->next=p->next;if(Q.rear==p){Q.rear=Q.front;}delete p;return 1;}int main(){LinkQueue Q;if(InitQueue(Q)){printf("链队Q初始化成功!\n");}else{printf("链队Q初始化失败!\n");}int n;printf("请输入入队元素的个数:");scanf("%d",&n);for(int i=0;i<n;i++){int e;printf("请输入地%d个入队的元素:",i+1);scanf("%d",&e);EnQueue(Q,e);}int e;DeQueue(Q,e);printf("队头元素:%d",e);}
0 0
- 队列的链式表示和实现
- 链式队列的表示和实现
- 链式队列的表示和实现
- 单队列的链式表示和实现
- 队列的链式表示和实现
- 队列的链式表示和实现
- 队列的链式表示和实现(数据结构)
- 队列的链式表示和实现
- 队列的链式表示和实现
- 链队列——队列的链式表示和实现
- 链队列-队列的链式表示和实现
- 链队列--队列的链式表示和实现
- 队列的链式表示和实现----单链队列
- 队列的链式表示和实现----循环队列
- 链队列---队列的链式表示和实现
- 数据结构之队列的链式表示和实现
- 队列的链式表示与实现
- 队列的链式表示与实现
- JAVA引用传递问题
- 求两点间的距离
- C++作业6—数组操作/数组合并
- java构造方法,以及super、this关键字、隐式调用、显式调用
- Android View 测量流程(Measure)完全解析
- 队列的链式表示和实现
- eclipse启动Tomcat时报错:严重: IOException while loading persisted sessions: java.io.EOF
- HDU 1492 The number of divisors(约数) about Humble Numbers(数论题目要知道定理呀....)
- 投资银行的20个Java面试题
- Java实现简单的RPC调用(基于TCP协议)
- Java使用memcache示例
- Picasso源码学习
- JMS初探-Active MQ
- Linux安装JDK