队列 入队,插入,出队,是否队空,队元元素,清空,打印

#pragma once
#include <windows.h>


typedef struct KEEP  //   
{
    int index;
    char* name;
    KEEP* next;

}KEEP;

typedef struct QUEUE  //   
{
    int size;
    KEEP*  front;
    KEEP*  back;

}QUEUE;

/上述为头文件
bool push_back(QUEUE* queue, KEEP keep) //入队
{
    KEEP* one = (KEEP*)malloc(sizeof(KEEP));
    one->index = keep.index;
    (char*)(one->name) = (char*)malloc(8 * sizeof(char));
    one->name = keep.name;
    KEEP *q = queue->back;
    if (queue->front== NULL)
    {
        queue->front = one;          //
        queue->back = one;
        queue->size++;
        return true;
    }
    else
    {
            q->next = one;
            queue->back = one;
            one->next = NULL;

            queue->size++;
            return true;
    }

}
bool insert(QUEUE* queue, int index,char* name)//插入
{
    KEEP keep = {0};
    keep.index = index;
    (char*)(keep.name) = (char*)malloc(8 * sizeof(char));
    strcpy(keep.name, name);
    push_back(queue, keep);
    return true;

}
bool pop_front(QUEUE*queue)//出队
{

    KEEP* p = queue->front;
    queue->front = p->next;
    free(p);
    return true;

}
bool empty(QUEUE queue)//是否队空
{
    KEEP *p = queue.front;
    if (p == NULL)
    {
        return 0;
    }
    else
    {
        return 1;
    }


}
int size(QUEUE queue)   //队员元素
{
    return printf("%d", queue.size);
}
int clear(QUEUE* queue)//清空
{
    KEEP *p = queue->front;
    KEEP *q = queue->front;
    for (p; p!=NULL;)
    {
        p=p->next;
        free(q);
        q = p;
        queue->size--;
    }
    queue->front = NULL;
    queue->back = NULL;
    return 0;
}

void show(QUEUE queue)  //打印
{
   KEEP *p= queue.front;
   for (p = queue.front; p!=NULL; p = p->next)
   {
       printf("%s %d\n", p->name, p->index);

   }

}


void main()
{
    QUEUE queue = { 0 };  //定义一个QUEUE结构体类型的变量queue,方便我们传数据
    insert(&queue, 12, "王五");//插入数据,因为插入是QUEUE* 类型,因此需要加上取值符&
    insert(&queue, 14, "张三");
    insert(&queue, 15, "李二");
    insert(&queue, 16, "liu二");
    show(queue);
    putchar('\n');
    pop_front(&queue);
    pop_front(&queue);
    pop_front(&queue);
    show(queue);
    printf("%d\n", empty(queue));
    size(queue);
    putchar('\n');
    clear(&queue);
    size(queue);
    printf("%d\n", empty(queue));
    getchar();

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值