快捷搜索: 王者荣耀 脱发

C/C++ 队列的出队入队单链表实现(完整代码)

队列的C/C++实现逻辑比较简单,用单链表实现队列的创建、入队、出队和判断队列是否为空操作,这里直接贴代码了。

/*  完整代码  */

#include <iostream>

using namespace std;

typedef struct queue {
    int val;
    struct queue* next;
}Queue;

void Init(Queue* ptr, int n) {  //初始化队列
    while (n --) {
        Queue* temp = (Queue *)malloc(sizeof(Queue));
        cin >> temp->val;
        temp->next = NULL;

        ptr->next = temp;
        ptr = temp;
    }
}

bool QueueEmpty(Queue* ptr) {   //判断队列是否为空
    if (ptr->next == NULL)
        return true;
    else  
        return false;
}

void Push(Queue* ptr, int item) { //入队
    Queue* temp = (Queue *)malloc(sizeof(Queue));
    temp->val = item;
    temp->next = NULL;

    while (ptr->next) {
        ptr = ptr->next;
    }

    ptr->next = temp;
}

void Pop(Queue* ptr) {  //出队
    if (QueueEmpty(ptr)) {
        cout << "队列为空,不能出队!" << endl;
        return;
    }else {
        Queue* temp = ptr->next;
        ptr->next = ptr->next->next;
        free(temp);
    }
}


void Show(Queue* ptr) { //遍历队列
    cout << "队列遍历: " ;
    while (ptr->next) {
        cout << ptr->next->val << " ";
        ptr = ptr->next;
    }
    cout << endl;
}


int main() {
    int n;
    cout << "请输入要插入的元素个数: ";
    cin >> n;

    Queue* front = (Queue *)malloc(sizeof(Queue));  //申请头结点
    Init(front, n);

    Show(front);

    Push(front, 23);

    Show(front);

    Pop(front);

    Show(front);



    return 0;
}

运行结果:

请输入要插入的元素个数: 2
13 18
队列遍历: 13 18 
队列遍历: 13 18 23 
队列遍历: 18 23
经验分享 程序员 微信小程序 职场和发展