链表队列

链表队列

 链表队列是受到限制的单向链表,采用链式存储结构,符合队列先进先出逻辑。

构造链式队列

 使用一个结构体来构造一个链表队列,其中成员num用于存储数据,*next使用指向下一个节点。

typedef struct list_queue
{
    int num ;
    struct list_queue * next ;
}Queue;

插入数据

Queue *add_queue(Queue *head, Queue *new)
{
    Queue *tmp = head;  

    if (head == NULL)
    {
        tmp = new;
        return tmp;
    }

    while(tmp->next != NULL)
    {
        tmp = tmp->next;
    }

    tmp->next = new;

    return  head;
}

注意:
参数head和new的初始值为NULL。

读取数据

Queue *ex_queue(Queue *head, Queue *ex)
{
    if (head == NULL)
    {
        printf("The current queue is empty!!\n");
        return  NULL;
    }

    Queue *tmp = head;
    head = tmp->next;
    tmp->next = NULL;

    (*ex).next = tmp->next;
    (*ex).num = tmp->num

    return head;
}

测试程序

int main(int argc, char const *argv[])
{
    Queue *head = NULL;

    //入队
    Queue *new = NULL;
    for (int i = 0; i < 10; i++)
    {
        new = new_node(i);
        printf("num:%d\n", new->num);
        head  = add_queue(head, new);
    }
    printf("-----------------------------------------\n");
    //出队
    Queue ex_data;
    for (int i = 0; i < 10; i++)
    {
        head = ex_queue(head, &ex_data);
        printf("data:%d\n", ex_data.num);
    }
    return 0;
}
posted @ 2020-12-12 11:36  ding-ding-light  阅读(114)  评论(0)    收藏  举报