链式队列的入队与出队操作(C语言)

简介: 链式队列的入队与出队操作(C语言)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef struct LinkNode{
    int data;
    struct LinkNode *next;
}LinkNode;
typedef struct LinkQueue{
    LinkNode *fronts,*rear;
}LinkQueue;
//初始化
int Init_LinkQueue(LinkQueue &Q)
{
    Q.fronts=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));
    Q.fronts->next==NULL;
}
//入队
int EnQueue(LinkQueue &Q,int x)
{
    LinkNode *s;
    s=(LinkNode*)malloc(sizeof(LinkNode));
    s->data=x;
    s->next=NULL;
    Q.rear->next=s;
    Q.rear=s;
}
//出队
int DeQueue(LinkQueue &Q,int &x)
{
    if(Q.fronts==Q.rear)
        return 0;
    LinkNode *q=Q.fronts->next;
    x=q->data;
    Q.fronts->next=q->next;
    if(Q.rear==q)
    {
        Q.rear=Q.fronts; //若原队列中仅有一个节点,删除后变空
    }
    free(q);
    return 1;
}
int show_Queue(LinkQueue Q)
{
    Q.fronts=Q.fronts->next;
    while(Q.fronts!=NULL)
    {
        printf("%d ",Q.fronts->data);
        Q.fronts=Q.fronts->next;
    }
}
int main()
{
    LinkQueue Q;
    Init_LinkQueue(Q);
    EnQueue(Q,1);
    EnQueue(Q,2);
    EnQueue(Q,3);
    show_Queue(Q);
    int a;
    DeQueue(Q,a);
    printf("%d\n",a);
    show_Queue(Q);
    cout << "Hello world!" << endl;
    return 0;
}
目录
相关文章
|
7月前
|
C语言
顺序队列的初始化、进队和出队(C语言)
顺序队列的初始化、进队和出队(C语言)
56 1
|
7月前
|
存储
循环队列的实现(附完整代码)
循环队列的实现(附完整代码)
75 1
|
7月前
|
C语言
C语言数据结构(队列、循环队列)
C语言数据结构(队列、循环队列)
26 0
【栈和队列OJ题】有效的括号&&用队列实现栈&&用栈实现队列&&设计循环队列(上)
【栈和队列OJ题】有效的括号&&用队列实现栈&&用栈实现队列&&设计循环队列(上)
【栈和队列OJ题】有效的括号&&用队列实现栈&&用栈实现队列&&设计循环队列(下)
【栈和队列OJ题】有效的括号&&用队列实现栈&&用栈实现队列&&设计循环队列(下)
链式队列的基本操作
链式队列的基本操作
96 0
|
存储 缓存 算法
【数据结构】队列(循环队列和链队列)详细讲解各种操作
【数据结构】队列(循环队列和链队列)详细讲解各种操作
941 0
|
C语言
【LeetCode】用队列实现栈和用栈实现队列(C语言)
【LeetCode】用队列实现栈和用栈实现队列(C语言)
196 0
【LeetCode】用队列实现栈和用栈实现队列(C语言)
|
存储 C语言
【数据结构】队列详解 && 栈和队列OJ题 —— 用队列实现栈、用栈实现队列、设计循环队列
【数据结构】队列详解 && 栈和队列OJ题 —— 用队列实现栈、用栈实现队列、设计循环队列
138 0
【数据结构】队列详解 && 栈和队列OJ题 —— 用队列实现栈、用栈实现队列、设计循环队列
|
机器学习/深度学习 存储 算法
【数据结构与算法】用队列实现栈&&用栈实现队列&&设计循环队列
【数据结构与算法】用队列实现栈&&用栈实现队列&&设计循环队列
【数据结构与算法】用队列实现栈&&用栈实现队列&&设计循环队列