苏嵌 项目实践

苏嵌 项目实战

学习日志 姓名:杨茜 日期: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

今日开发中出现的问题汇总:

对于链式结构的理解不够。程序编写总是有各种各样的错误。

今日未解决问题:

程序编写还未完成,对结构体的读取的两种方法没能完全理解。

今日开发收获:

学习了队列的清空,读取。

自我评价: 通过三天的学习,能勉强跟上老师的节奏。但是对内容的理解不够。

(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值