苏嵌实训3

苏嵌 项目实战

学习日志 姓名:刘琪耘 日期:2018-9-5

今日学习任务
学习c语言中队列的知识,包括对头,队尾,先进先出,链式结构

今日任务完成情况
基本完成老师讲的程序
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、付费专栏及课程。

余额充值