队的基本操作

/*
队的基本操作 
InitQueue(&Q)   //初始化队列 
QueueEmpty(Q)   //判断队是否为空   
EnQueue(&Q,&x)  //入队 
DeQueue(&Q,&x)  //出队 
GetHead(&Q,&x)  //读出队头 
注:队是受限的线性表,无法读出队中的某一个元素 
*/
#include<stdio.h>
#define Maxsize 50
typedef struct{
    int Q[Maxsize];
    int front,rear;
}sqQueue;
void InitQueue(sqQueue &Q)
{
    Q.front = Q.rear =0
}
bool QueueEmpty(sqQueue Q)
{
    if(Q.front == Q.rear)
    return true;
    else
    return false;
}
bool EnQueue(sqQueue &P,int x)
{
    if(P.rear%(Maxsize-1)==P.front)
    {
        return false;
    }
    else
    {
        P.Q[P.rear] = x;
        return true;
    }
}
bool DeQueue(sqQueue &P,int x)
{
    if(P.rear%(Maxsize-1)==P.front)
    {
        return false;
    }
    else
    {
        x = P.Q[P.front];
        P.front = (P.front+1)%Maxsize;
        return true;
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、顺序栈的建立、取栈顶元素、入栈、出栈、求栈的长度、清空等操作: 顺序栈是基于数组实现的栈,它的特点是先进后出。下面是顺序栈的基本操作: 建立栈: ```python class SeqStack: def __init__(self, max_size=10): self.max_size = max_size self.stack = [None] * max_size self.top = -1 ``` 取栈顶元素: 栈顶元素就是最后一个入栈的元素,所以可以直接返回栈顶指针指向的元素。 ```python def get_top(self): if self.top == -1: return None return self.stack[self.top] ``` 入栈: 入栈操作就是将元素插入到栈顶指针的下一个位置,然后将栈顶指针加1。 ```python def push(self, value): if self.top == self.max_size - 1: return False self.top += 1 self.stack[self.top] = value return True ``` 出栈: 出栈操作就是将栈顶指针指向的元素弹出,然后将栈顶指针减1。 ```python def pop(self): if self.top == -1: return None value = self.stack[self.top] self.top -= 1 return value ``` 求栈的长度: 栈的长度就是栈顶指针加1。 ```python def size(self): return self.top + 1 ``` 清空栈: 清空栈就是将栈顶指针重置为-1。 ```python def clear(self): self.top = -1 ``` 2、循环队列的建立、取中元素、入、出基本操作的实现: 循环队列是基于数组实现的队列,它的特点是先进先出。下面是循环队列基本操作: 建立队列: ```python class CircularQueue: def __init__(self, max_size=10): self.max_size = max_size self.queue = [None] * max_size self.head = 0 self.tail = 0 ``` 取中元素: 取中元素就是返回头指针指向的元素。 ```python def get_front(self): if self.head == self.tail: return None return self.queue[self.head] ``` 入: 入操作就是将元素插入到尾指针的下一个位置,然后将尾指针加1。 ```python def enqueue(self, value): if (self.tail + 1) % self.max_size == self.head: return False self.queue[self.tail] = value self.tail = (self.tail + 1) % self.max_size return True ``` 出: 出操作就是将头指针指向的元素弹出,然后将头指针加1。 ```python def dequeue(self): if self.head == self.tail: return None value = self.queue[self.head] self.head = (self.head + 1) % self.max_size return value ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值