【ADT】14.10_queue_using_Linklist

本文详细介绍了如何使用链表实现队列,包括`EnQueue`和`DeQueue`操作。在创建队列时,需要初始化`front`和`rear`指针为`NULL`。此外,还展示了如何在链表中添加和删除元素,以及显示队列内容的`DisPlay`函数。在实际应用中,确保正确初始化和管理队列以避免错误。
摘要由CSDN通过智能技术生成

1)这里我复习下我以前搞混的一个点:

//该语句的含义是,创建的是名为:front的Node结构体指针并赋予初始值NULL(空),名为:rear的Node结构体指针并赋予初始值NULL(空)。

//该语句的含义是,为结构体node别名Node,下文中Node ⇔ struct node。并没有创建结构变量。

2)用链表实现队的一些注意事项和说明: 

 3)实现代码:

 

#include<stdlib.h>
#include<stdio.h>

typedef struct node
{
    int data;
    struct node *next;
}Node;

typedef struct queuepointer
{
    Node *front;
    Node *rear;
}Queuepointer;

void EnQueue(Queuepointer *Q,int x)
{
    Node *tem =(Node *)malloc(sizeof(Node));
    if(tem == NULL)
        printf("Queue is full\n");
    else
    {
        tem->data = x;
        tem->next = NULL;
        if(Q->front == NULL)//If in the queue is no node
            Q->front = Q->rear = tem;
        else//Exist queue then add node at the queue's end
        {
            Q->rear->next = tem;
            Q->rear = tem;
        }
    }
}

int DeQueue(Queuepointer *Q)
{
    int dequeue_data;
    Node *con_p;
    if(Q->front == NULL)
        printf("Queue is Empty\n");
    else
    {
        con_p = Q->front;
        Q->front = Q->front->next;
        dequeue_data = con_p->data;
        free(con_p);
        printf("Dequeue data:%d\n",dequeue_data);
        return 1;
    }
    return -1;
}

void DisPlay(Queuepointer Q)
{
    Node* tem = Q.front;
    while(tem)
    {
        printf("[%d-]-",tem->data);
        tem = tem->next;
    }
    printf("\n");
}

int main()
{
    Queuepointer q1;
    q1.front = q1.rear = NULL;//⚠️一定不要忘记初始化队,不然入队:Q->rear->next = tem;Q->rear->next 无法赋值
    
    EnQueue(&q1,1);
    EnQueue(&q1,2);
    EnQueue(&q1,3);
    EnQueue(&q1,4);
    EnQueue(&q1,5);
    EnQueue(&q1,6);


    DisPlay(q1);
    
    DeQueue(&q1);
    DeQueue(&q1);
    DeQueue(&q1);
    DeQueue(&q1);
    DeQueue(&q1);
    DeQueue(&q1);
    DeQueue(&q1);
    
    return 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值