链队列


    include <iostream>
    
    using namespace std;
    
    #define OK 1
    #define ERROR 0
    
    typedef int ElemType;
    typedef struct QNode {
    	ElemType data;
    	struct QNode* Next;
    }QNode,*QueuePtr;
    typedef struct {
    	QueuePtr front;
    	QueuePtr rear;
    }LinkQueue;
    
    int InitQueue(LinkQueue& Q) {
    	Q.front = Q.rear = new QNode;
    	Q.front->Next = NULL;
    	return OK;
    }
    
    int EnQueue(LinkQueue& Q, ElemType e) {
    	QueuePtr p;
    	p = new QNode;
    	p->data = e;
    	p->Next = NULL;
    	Q.rear->Next = p;
    	Q.rear = p;
    	return OK;
    }
    
    int DeQueue(LinkQueue& Q, ElemType& e) {
    	if (Q.front == Q.rear) return ERROR;
    	QueuePtr p;
    	p = Q.front->Next;
    	e = p->data;
    	Q.front->Next = p->Next;
    	delete p;
    	return OK;
    }
    
    int GetHead(LinkQueue Q) {
    	if (Q.front != Q.rear)
    		return Q.front->Next->data;
    	else{
    		cout << "错误" << endl;
    		return ERROR;
    	}
    
    }
    
    int main()
    {
    	cout << "0、退出程序" << endl;
    	cout << "1、队列入队" << endl;
    	cout << "2、队列出队" << endl;
    	cout << "3、取头元素" << endl;
    	cout << "---------------------------" << endl;
    	
    	LinkQueue lq;
    	InitQueue(lq);
    	int num,n,status,elem,temp;
    	while (true) {
    		cout << "你的选择:" << endl;
    		cin >> num;
    		cout << "---------------------------" << endl;
    		switch (num)
    		{
    		case 1:
    			cout << "你想插入的数:";
    			cin >> n;
    			status = EnQueue(lq, n);
    			if (status == 1) {
    				cout << " 插入成功。" << endl;
    				cout << "---------------------------" << endl;
    				continue;
    			}
    			else {
    				cout << "操作失败!" << endl;
    				cout << "---------------------------" << endl;
    				continue;
    			}
    		case 2:
    			status = DeQueue(lq, temp);
    			if (status == 1) {
    				cout << "出队成功。"<< endl;
    				cout << "---------------------------" << endl;
    				continue;
    			}
    			else {
    				cout << "操作失败!" << endl;
    				cout << "---------------------------" << endl;
    				continue;
    			}
    		case 3:
    			elem = GetHead(lq);
    			if (elem) {
    				cout << "当前元素为" << elem << endl;
    				cout << "---------------------------" << endl;
    				continue;
    			}
    			else {
    				cout << "操作失败!" << endl;
    				cout << "---------------------------" << endl;
    				continue;
    			}
    		case 0:
    			break;
    		default:
    			cout << "输入错误!" << endl;
    			cout << "---------------------------" << endl;
    			continue;
    		}
    		break;
    	}
    
    
    
    
    }


作者:qianyuzz

出处:https://www.cnblogs.com/qianyuzz/p/17059921.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   qianyuzz  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示