尼采般地抒情

尼采般地抒情

尼采般地抒情

音乐盒

站点信息

文章总数目: 319
已运行时间: 1923

顺序循环队列


#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";
}

评论区

什么都不舍弃,什么也改变不了