队列:通过链表方式实现

发布时间:2024年01月05日
#include <stdio.h>
#include <stdlib.h>

#define maxsize 5
typedef struct LinkNode {
    int data;
    struct LinkNode *next;
} LinkNode;

typedef struct {
    LinkNode *front, *rear;//链表头,链表尾
} LinkQueue;

void initQueue(LinkQueue &q) {
    q.front = q.rear = (LinkNode *) malloc(sizeof(LinkNode));
    q.front->next = NULL;
}

bool isEmpty(LinkQueue q) {
    if (q.rear == q.front) { return true; } else { return false; }
}

bool enQueue(LinkQueue &q, int num) {
    LinkNode *p = (LinkNode *) malloc(sizeof(LinkNode));
    p->data = num;
    p->next = NULL;
    q.rear->next = p;//尾指针的next指向p,从尾部入队
    q.rear = p;//rear指向新的尾部
    return  true;
}

bool deleteQueue(LinkQueue &q, int &e) {
    if (q.front == q.rear) {
        return false;
    } else {

    }
    LinkNode *pc = q.front->next;//拿到被删节点
    q.front->next = pc->next;
    e = pc->data;
    free(pc);
    if (q.rear == pc) {
        q.rear = q.front;
    }
    return true;
}

int main() {
    LinkQueue q;
    initQueue(q);
    isEmpty(q);
    bool result;
    enQueue(q, 1);
    enQueue(q, 2);
    enQueue(q, 3);
    enQueue(q, 4);
    enQueue(q, 5);
    int e;
    result = deleteQueue(q, e);
    if (result) {
        printf("success\n");
    } else {
        printf("fail\n");
    }
}

文章来源:https://blog.csdn.net/qq_45827004/article/details/135404704
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。