实现链队列的初始化、入队和出队操作

编程入门 行业动态 更新时间:2024-10-08 10:59:29

实现链<a href=https://www.elefans.com/category/jswz/34/1771257.html style=队列的初始化、入队和出队操作"/>

实现链队列的初始化、入队和出队操作

编程实现链队列的初始化、入队和出队操作。

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#define OK 1
#define OVERFLOW 2
#define ERROR -1
using namespace std;
typedef int QElemType;
typedef int Status ;
typedef struct QNode{QElemType data;struct QNode *next;
}QNode,*QueuePtr;
typedef struct {QueuePtr front;QueuePtr rear;
}LinkQueue;
Status InitQueue(LinkQueue &Q){Q.front = (QueuePtr)malloc(sizeof(QNode));Q.rear = (QueuePtr)malloc(sizeof(QNode));if(!Q.front)exit(OVERFLOW);Q.front = Q.rear;return OK;
}
Status InitStack(LinkQueue &Q){QueuePtr p;int e;cout << "请输入元素,以-2 结束" << endl;while(scanf("%d",&e) && e != -2){p=(QueuePtr)malloc(sizeof(QNode));p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;}p=Q.front->next;while(p!=NULL){cout << p->data << " ";p = p->next;}cout << endl;return OK;
}
void Test()
{cout << "所有操作如下:" << endl;cout << "(1)采用链式存储实现队列的初始化操作" << endl;cout << "(2)采用链式存储实现队列的入队操作" << endl;cout << "(3)采用链式存储实现队列的出队操作" << endl;cout << "(-1)退出" << endl;cout << "请选择:";
}
Status DeQueue(LinkQueue &Q){QueuePtr p;if(Q.front==Q.rear){printf("队列为空!!!!!!!!\n");return ERROR;}p = Q.front->next;cout << p->data << endl;Q.front -> next = p -> next;if(Q.rear == p)Q.rear = Q.front;free(p);return OK;
}
Status EnQueue(LinkQueue &Q){QueuePtr p;p = (QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);cout << "请输入要入队的元素:" << endl;cin >> p->data;Q.rear -> next = p;p -> next = NULL;Q.rear = p;return OK;
}
int main()
{LinkQueue q;InitQueue(q);int m;do {Test();cin >> m;switch(m){case 1:InitStack(q);break;case 2:EnQueue(q);break;case 3:DeQueue(q);break;}}while(m!=-1);return 0;
}

更多推荐

实现链队列的初始化、入队和出队操作

本文发布于:2024-02-13 17:48:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759962.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:队列   初始化   操作

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!