尼采般地抒情

公告栏

此网站主题为本人手写主题, 主题待开源···

站点信息

文章总数目: 298
已运行时间: 991
目录
  1. 顺序循环队列
  2. 链队

尼采般地抒情

尼采般地抒情

公告栏

此网站主题为本人手写主题, 主题待开源···

站点信息

文章总数目: 298
已运行时间: 991

顺序循环队列


#include<bits/stdc++.h>

using namespace std;

typedef int Status;
typedef int QElemType;

#define OVERFLOW -1
#define ERROR 0
#define OK 1
#define MAXSIZE 100

/\*\*

- 循环队列——队列的顺序表示和实现
-
- 操作:初始化、队列长度、入队、出队、取队头元素
  \*/

/_ 存储形式 _/
typedef struct {
QElemType \*base;
int front;
int rear;
} SqQueue;

/_ 初始化 _/
Status InitQueue(SqQueue &queue) {
// 初始化这个 base 地址为一个有最大容量的数组初地址
queue.base = new int[MAXSIZE];
if (!queue.base) {
return OVERFLOW;
}
queue.front = queue.rear = 0;
return OK;
}

/_ 求队列长度 _/
Status QueueLength(SqQueue &queue) {
return (queue.rear - queue.front + MAXSIZE) % MAXSIZE;
}

/_ 入队 _/
Status EnQueue(SqQueue &queue, QElemType e) {
if ((queue.rear+1)%MAXSIZE == queue.front) {
return OVERFLOW;
}
queue.base[queue.rear] = e;
queue.rear = (queue.rear + 1) % MAXSIZE;
return OK;
}

/_ 出队 _/
Status DeQueue(SqQueue &queue) {
if ((queue.rear+1)%MAXSIZE == queue.front) {
return OVERFLOW;
}
QElemType e = queue.base[queue.front];
queue.front = (queue.front + 1) % MAXSIZE; //队头指针+1
return e;
}

/_ 取队头元素 _/
Status GetHead(SqQueue &queue) {
if (queue.front != queue.rear) {
return queue.base[queue.front];
}
}

int main() {
SqQueue test;
InitQueue(test);
EnQueue(test, 10);
EnQueue(test, 15);
EnQueue(test, 20);
cout << "队列长度为:" << QueueLength(test) << "\n";
cout << GetHead(test)<<" "<< GetHead(test)<<" "<< GetHead(test)<<" "<<"\n";
cout << DeQueue(test)<<" "<< DeQueue(test)<<" "<< DeQueue(test)<<" "<<"\n";
}

链队

#include<bits/stdc++.h>
using namespace std;

typedef int Status;
typedef int QElemType;

#define OVERFLOW -1
#define ERROR 0
#define OK 1
#define MAXSIZE 100

/\*\*

- 链队——队列的链式表示和实现
-
- 操作:初始化、入队、出队、取队头元素
  \*/

/_ 存储形式 _/
typedef struct QNode{ //链队用的结点
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;

typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;

/_ 初始化 _/
Status InitQueue(LinkQueue &queue) {
queue.front = queue.rear = new QNode;
queue.front->next = NULL;
return OK;
}

/_ 入队 _/
Status EnQueue(LinkQueue &queue, QElemType e) {
QueuePtr temp = new QNode;
temp->data = e;
temp->next = NULL;
queue.rear->next = temp;
queue.rear = temp;
return OK;
}

/_ 出队 _/
Status DeQueue(LinkQueue &queue) {
if (queue.front == queue.rear) {
return OVERFLOW;
}
QElemType e = queue.front->next->data;
queue.front->next = queue.front->next->next;
// 考虑最后一个元素被删,队尾指针指向头结点
if (queue.rear == queue.front) {
queue.front = queue.rear;
}
return e;
}

/_ 取队头元素 _/
Status GetHead(LinkQueue &queue) {
if (queue.front != queue.rear){
return queue.front->next->data;
}
}

int main() {
LinkQueue test;
InitQueue(test);
EnQueue(test, 10);
EnQueue(test, 15);
EnQueue(test, 20);
// cout << "队列长度为:" << QueueLength(test) << "\n";
cout << GetHead(test)<<" "<< GetHead(test)<<" "<< GetHead(test)<<" "<<"\n";
cout << DeQueue(test)<<" "<< DeQueue(test)<<" "<< DeQueue(test)<<" "<<"\n";
}

评论区

Twikoo giscus