实验二顺序队列

#include<iostream.h>
const int QueueSize=100;
class CirQueue
{
public:
	CirQueue(){front=rear=QueueSize-1;}
	~CirQueue(){}
	void EnQueue(int x);
	int DeQueue();
	int GetQueue();
private:
	int Data[QueueSize];
	int front,rear;
};
void CirQueue::EnQueue(int x)
{
	if((rear+1)%QueueSize==front)throw"上溢";
	rear=(rear+1)%QueueSize;
	Data[rear]=x;
}
int CirQueue::DeQueue()
{
	if(rear==front) throw"下溢";
	front=(front+1)%QueueSize;
	return Data[front];
}
int CirQueue::GetQueue()
{
	int i;
	if(rear==front) throw"下溢";
	i=(front+1)%QueueSize;
	return Data[i];
}
void main()
{
	CirQueue C;
	cout<<"元素13和14执行入队操作:"<<endl;
	try
	{
		C.EnQueue(13);
		C.EnQueue(14);
	}
	catch(char* wrong)
	{
		cout<<wrong<<endl;
	}
	cout<<"查看队头元素:"<<endl;
	cout<<C.GetQueue()<<endl;
	cout<<"执行出队操作:"<<endl;
	try
	{
		C.DeQueue();
	}
	catch (char* wrong)
	{
		cout<<wrong<<endl;
	}
	cout<<"查看队头元素:"<<endl;
	cout<<C.GetQueue()<<endl;	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是栈和队列的C语言代码实现: 1. 建立一个顺序栈 ```c #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 // 栈的最大容量 typedef struct { int data[MAXSIZE]; // 存储数据的数组 int top; // 栈顶指针 } SqStack; // 初始化栈 void initStack(SqStack *s) { s->top = -1; } // 判断栈是否为空 int isEmpty(SqStack *s) { return s->top == -1; } // 判断栈是否已满 int isFull(SqStack *s) { return s->top == MAXSIZE - 1; } // 进栈操作 void push(SqStack *s, int x) { if (isFull(s)) { printf("栈已满,无法再进栈!\n"); return; } s->top++; s->data[s->top] = x; } // 出栈操作 int pop(SqStack *s) { if (isEmpty(s)) { printf("栈已空,无法出栈!\n"); return -1; } int x = s->data[s->top]; s->top--; return x; } // 打印栈中元素 void printStack(SqStack *s) { printf("栈中元素为:"); for (int i = s->top; i >= 0; i--) { printf("%d ", s->data[i]); } printf("\n"); } int main() { SqStack s; initStack(&s); int n, x; printf("请输入要进栈的元素个数:"); scanf("%d", &n); printf("请输入%d个整型数:", n); for (int i = 0; i < n; i++) { scanf("%d", &x); push(&s, x); } printStack(&s); printf("出栈一个元素:%d\n", pop(&s)); printStack(&s); return 0; } ``` 2. 建立一个顺序队列 ```c #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 // 队列的最大容量 typedef struct { int data[MAXSIZE]; // 存储数据的数组 int front, rear; // 队首和队尾指针 } SqQueue; // 初始化队列 void initQueue(SqQueue *q) { q->front = q->rear = 0; } // 判断队列是否为空 int isEmpty(SqQueue *q) { return q->front == q->rear; } // 判断队列是否已满 int isFull(SqQueue *q) { return (q->rear + 1) % MAXSIZE == q->front; } // 入队操作 void enQueue(SqQueue *q, int x) { if (isFull(q)) { printf("队列已满,无法再入队!\n"); return; } q->data[q->rear] = x; q->rear = (q->rear + 1) % MAXSIZE; } // 出队操作 int deQueue(SqQueue *q) { if (isEmpty(q)) { printf("队列已空,无法出队!\n"); return -1; } int x = q->data[q->front]; q->front = (q->front + 1) % MAXSIZE; return x; } // 获取队首元素 int getFront(SqQueue *q) { if (isEmpty(q)) { printf("队列为空,无法获取队首元素!\n"); return -1; } return q->data[q->front]; } // 清空队列 void clearQueue(SqQueue *q) { q->front = q->rear = 0; } int main() { SqQueue q; initQueue(&q); int n, x; printf("请输入要入队的元素个数:"); scanf("%d", &n); printf("请输入%d个整型数:", n); for (int i = 0; i < n; i++) { scanf("%d", &x); enQueue(&q, x); } printf("队首元素为:%d\n", getFront(&q)); printf("出队一个元素:%d\n", deQueue(&q)); printf("队首元素为:%d\n", getFront(&q)); clearQueue(&q); printf("队列已清空!\n"); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值