C C++最全c++ 循环队列基本操作案例_顺序栈有假溢出吗,2024年最新全网首发

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

#define ERROR 0
#define OVERFLOW -1

typedef char QElemType;
typedef char SElemType;
typedef int Status;

typedef struct {
// 初始化动态分配内存空间
QElemType *base;
int front; // 队头指针
int rear; // 队尾指针
}SqQueue;

// 初始化循环队列
Status Init_Queue(SqQueue &Q) { // 构造一个空队列Q
Q.base = new QElemType[MAXQSIZE];
if (!Q.base)
exit(OVERFLOW); // 存储空间分配失败
Q.front = Q.rear = 0; // 队头指针队尾指针设置为0,队列是为空

return OK;

}

// 求循环队列的长度
int Calc_QueueLength(SqQueue Q) { // 返回Q的元素个数,即队列的长度
return (Q.rear - Q.front + MAXQSIZE) % MAXQSIZE;
}

// 获取循环队列的人头元素
SElemType GetHead_Queue(SqQueue Q) { // 返回Q的队头元素,不修改队头指针
if (Q.front != Q.rear) // 非空
return Q.base[Q.front]; // 返回队头元素的值,队头指针不变
}

// 入队
Status Entry_Queue(SqQueue &Q, QElemType e) { // 插入元素e为Q这个队列队尾的元素
if ((Q.rear + 1) % MAXQSIZE == Q.front) // 尾队指针在循环意义上加1后等于头指针,表明队列已经满
return ERROR;
Q.base[Q.rear] = e; // 新元素值e插入队尾
Q.rear = (Q.rear + 1) % MAXQSIZE; // 队尾指针加1

return OK;

}

// 出队
Status Output_Queue(SqQueue &Q, QElemType &e) { // 删除Q队列的头元素,用e返回要删除元素的值
if (Q.rear == Q.front) // 队列为空
return ERROR;
e = Q.base[Q.front]; // 保存队头元素
Q.front = (Q.front + 1) % MAXQSIZE; // 队头指针加1

return OK;

}

int main()
{
int choose, flag = 0;
SqQueue Q;
QElemType e, j;

cout << " 1.初始化队列 2.入队 3.读取队列头元素 4.出队 0.退出\n\n" << endl;
choose = -1;
while (choose != 0)
{
	cout << "请选择队列的操作项[0-4]:";
	cin >> choose;
	switch (choose) {
	case 1:
		if (Init\_Queue(Q)) {
			flag = 1;
			cout << "循环队列初始化成功." << endl << endl;
		}
		else
		{
			cout << "循环队列初始化失败." << endl << endl;
		}
		break;
		
	case 2:
	{
		fstream file;
		file.open("CycleQNode.txt");
		if (!file)
		{
			cout << "打开文件失败." << endl << endl << endl;
			return  ERROR;
		}

		if (flag) {
			flag = 1;
			cout << "队列入队元素依次为:\n";
			while (!file.eof()) {
				file >> j;
				if (file.fail())
				{
					break;
				}

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

/618668825)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值