苏嵌实训日志3

姓名:李安思 日期:2018.9.5

今日学习任务:
学习了解队列的顺序存储和链式存储 知识

今日任务完成情况:
基本完成布置任务,课上基本能跟上
main.c

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

int main()
{
    Q queue;
    int ret,i;

    ret = InitQueue (&queue);   //初始化队列
    if(ret == FAILURE)          //返回值判断
    {
        printf("Init Failure!\n");
        exit(1);
    }

    else if (ret == SUCCESS)
    {
        printf("Init Success!\n");
    }

    ret = EmptyQueue(queue);
    if(ret == SUCCESS)
    {
        printf("queue is empty\n");

    }
    else if (ret == FAILURE)
    {
        printf("queue is not empty\n");
    }
    for(i=0;i<10;i++)
    {
        //进队操作
        ret=EnterQueue(&queue,i + 1);
        if(ret == FAILURE)
        {
            printf("enter failure!\n",i+1);
        }
        else if (ret == SUCCESS)
        {
            printf("enter %d success!\n",i+1);
        }
    }


    int length = LengthQueue(queue);
    printf("Length is %d\n",length);

    ret = GetFront(queue);
    if(ret == FAILURE)
    {
        printf("get front failure!\n");
    }
    else
    {
        printf("front is %d\n",ret);
    }




    for(i=0;i<5;i++)
    {
        ret = DelQueue(&queue);
        if(ret == FAILURE)
        {
            printf("Del Failure!\n");
        }
        else
        {
            printf("Del %d Success!\n",ret);
        }
    }

    //获取代码
    length = LengthQueue(queue);
    printf("Length is %d\n",length);

    ret = GetFront(queue);
    if(ret == FAILURE)
    {
        printf("get front failure!\n");
    }
    else
    {
        printf("front is %d\n",ret);
    }

    //清空队列
    ret = ClearQueue(&queue);
    if(ret == SUCCESS)
    {
        printf("Clear Success!\n");
    }
    else 
    {
        printf("Clear Failure!\n");

    }

    //获取代码
    length = LengthQueue(queue);
    printf("Length is %d\n",length);

    ret = GetFront(queue);
    if(ret == FAILURE)
    {
        printf("get front failure!\n");
    }
    else
    {
        printf("front is %d\n",ret);
    }

    ret = DestroyQueue(&queue);
    if(ret == FAILURE)
    {
        printf("Destroy Failure!\n");
    }
    else
    {
        printf("Destroy Success!\n");
    }


    return 0;
}

queue.c

#include"queue.h"
#include<stdlib.h>

int InitQueue(Q * q)
{
    if( NULL == q)      //入参判断
    {
        return FAILURE;
    }

    q->data = (int *)malloc(sizeof(int)*MAXSIZE);
    if(NULL == q->data)
    {
        return FAILURE;
    }
    q -> front = q -> rear =0;
    return SUCCESS;
}


int EmptyQueue(Q q)
{
    return ((q.front == q.rear)? SUCCESS: FAILURE);
}

int EnterQueue(Q * q,int e)
{
    if(NULL == q) //入参判断
    {
        return FAILURE;
    }
    if((q -> rear+1)% MAXSIZE == q->front) //队满
    {
        return FAILURE;
    }
    q -> data[q ->rear] = e;
    q -> rear = (q ->rear +1) % MAXSIZE;

    return SUCCESS;
}

int LengthQueue(Q q)
{
    int len;

    len =(q.rear - q.front +MAXSIZE) % MAXSIZE;
    return len;
}

int GetFront(Q q)
{
    if(q.front == q.rear)
    {
        return FAILURE;
    }
    // 返回第一个元素
    return q.data[q.front];
}

int DelQueue(Q *q)
{
    if(NULL == q) //入参判断
    {
        return FAILURE;
    }
    if(q -> rear == q-> front) //空队
    {
        return FAILURE;
    }

    int e = q -> data[q -> front];
    q->front = (q -> front +1) % MAXSIZE;

    return e;
}


int ClearQueue(Q * q)
{
    if(NULL == q) //入参判断
    {
        return FAILURE;
    }

    //头指针和尾指针指向相同的位置
    q -> rear = q -> front;
    return SUCCESS;
}


int DestroyQueue(Q * q)
{
    if(NULL == q) //入参判断
    {
        return FAILURE;
    }
    free(q -> data); //释放空间

    return SUCCESS;
}

queue.h

#ifndef QUEUE_H
#define QUEUE_H

#define MAXSIZE 10
#define SUCCESS 1000
#define FAILURE 1001    

struct queue
{
    int *data;
    int front;      //队头
    int rear;       //队尾
};

typedef struct queue Q;

int InitQueue(Q * q);
int EmptyQueue(Q q);
int EnterQueue(Q * q,int e);
int LengthQueue(Q q);
int GetFront( Q q);
int DelQueue(Q * q);
int ClearQueue(Q * q);
int DestroyQueue(Q * q);


#endif

今日开发中出现的问题汇总:
出现了很多错误,还不是很熟练

今日开发收获:
学习了栈的知识

自我评价:
基本能跟上,但还不是很懂

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值