链式队列

1.队列

2.队列实现

2.1队列数据结构

2.1.1 队列头
typedef struct quene_header
{
    int quene_length; //队列长度
    Seq_Node* front;
}*PtrSeqHeader;
2.1.2 队列节点
typedef struct quene_node
{
    int data;
    struct quene_node * next;
}Seq_Node,*PtrSeqNode;

2.2 函数实现

2.2.1 创建队列
//创建空队列
int create_quene(PtrSeqHeader &header)
{
    header = (PtrSeqHeader)malloc(sizeof(struct quene_header));
    if(NULL==header)
    {
        printf("create quene faild \n");
        return 1;
    }
    memset(header,0,sizeof(struct quene_header));
    return 0;
}
2.2.2 添加数据(入队)
    int quene_push(PtrSeqHeader &header,int data)
{
    Seq_Node*  node;
    Seq_Node* temp;

    if(header == NULL)
    {
        printf("quene not exist \n");
        return 1;
    }

    node=(Seq_Node*)malloc(sizeof(struct quene_node));
    if(node==NULL)
    {
        printf("create node faild \n");
        return 1;
    }
    memset(node,0,sizeof(struct quene_node));
    node->data=data;

    if(header->front)
    {
        temp=header->front;
        while(temp->next)
        {
            temp=temp->next;
        }

        temp->next=node;

    }
    else
    {
        header->front=node;

    }

    header->quene_length++;
    return 0;
}
2.2.2 删除数据(出队)
int quene_pop(PtrSeqHeader &header)
{
    struct quene_node* temp;

    if(header->quene_length==0)
    {
        printf("quene is empty \n");
        return 1;
    }

    temp=(struct quene_node*)header->front;

    header->front=temp->next;

    free(temp);
    return 0;
}
2.2.2 打印队列数据(遍历)
void display_quene(PtrSeqHeader &header)
{
    PtrSeqNode temp;
    temp=header->front;
    do
    {
        printf("the data is %d \n",temp->data);
        temp=temp->next;
    }while(temp);
}

3.测试实现

3.1 效果测试

void main()
{
    PtrSeqHeader header=0;
    int i=0;
    int data[10]={5,6,7,9,1,2,3,4,0,8};

    //创建队列
    create_quene(header);

    //数据依次入队
    for(i=0;i<10;i++)
    {
        quene_push(header,data[i]);
    }

    //打印队列
    display_quene(header);
    printf("\n\n");

    //出队 打印
    quene_pop(header);
    display_quene(header);
    printf("\n\n");

    quene_pop(header);
    quene_pop(header);
    display_quene(header);

    getchar();

}

这里写图片描述

3.2 记录笔记

报错:“CRT detected that the application wrote to memory after end of heap buffer”

原因:malloc申请的节点空间,未完全memset

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值