苏嵌实训

姓名:王大练
日期:2018.9.05
一.今日学习任务
学习数据结构中队列的知识
使用C语言实现了顺序队列的操作与链式队列的操作
二 今日任务完成情况
理解了顺序队列的概念与链式队列的概念。
完成了相关代码。

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

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

    ret = InitQueue(&queue);
    if(ret == FATLURE)
    {
        printf("Init FATLUE\n");
        exit(1); //退出
    }
    else if(ret == SUCCESS) 
    {
        printf("Init SUCCESS\n");
    }
    if(ret == SUCCESS)
       {
            printf(" enter %d success\n",i + 1);
       }
    ret = EmpytQueue(queue);
    if(ret == SUCCESS)
    {
        printf("queue is empty\n");
    }
    else if( ret == FATLURE)
    {
         printf("queue is not empty\n");
    }

    for(i = 0;i < 10; i++)
    {
        ret = EnterQueue(&queue, i + 1);
       if( ret == FATLURE)
       {
           printf(" enter failure\n");
       }
       else if(ret == SUCCESS)
       {
            printf(" enter %d success\n",i + 1);
       }
    }

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

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

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

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

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

     ret = ClearQueue(&queue);
     if(ret == SUCCESS)
       {
            printf("Clear success\n");
       }
       else 
       {
             printf("CLear faillure!\n");
       }


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

     ret = DesstoryQueue(&queue);
     if( ret == FATLURE)
     {
         printf("Desstory faillure!\n");
     }
     else
     {
         printf("Desstory Success\n");
     }
    return 0

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

int InitQueue(Q *q)
{
     if( NULL == q)
     {
         return  FATLURE;
     }

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

     return SUCCESS;
}

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

int EnterQueue(Q *q,int e)
{
     if( NULL == q)
     {
         return  FATLURE;
     }
     if((q ->rear + 1) % MAXSIZE == q ->front)
     {
         return  FATLURE;
     }

     q ->date[q ->rear] = e;
     q ->rear = (q ->rear + 1) % MAXSIZE;

     return SUCCESS;
}  

int LengthQueue(Q q)
{
    int len;

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

int GetFront(Q q)
{
    if(q.front == q.rear)
     {
         return  FATLURE;
     }

     return q.date[q.front];
} 

int DelQueue(Q *q)
{
     if( NULL == q)
     {
         return  FATLURE;
     }

     if(q ->rear == q ->front)
     {
         return  FATLURE;
     }

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

     return e;
}


int ClearQueue(Q *q)
{
    if( NULL == q)
     {
         return  FATLURE;
     }

     q ->front = q ->rear;
     return SUCCESS;
}  

int DesstoryQueue(Q *q)
{
    if( NULL == q)
     {
         return  FATLURE;
     }

     free(q ->date);

     return SUCCESS;
}

#ifndef  QUEUE_H
#define  QUEUE_H

#define  MAXSIZE 10
#define  SUCCESS 10000
#define  FATLURE 10001

struct queue
{
    int *date;
    int front;
    int rear;
};
typedef struct queue Q;

int EnterQueue(Q *q,int e);
int EnterQueue(Q *q,int e);
int EmpytQueue(Q q);
int LengthQueue(Q q);
int GetFront(Q q);
int DelQueue(Q *q);
int ClearQueue(Q *q);
int DesstoryQueue(Q *q);

#endif

链式

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

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

    ret = InitQueue(&queue);
    if(ret == FATLURE)
    {
        printf("Init fatlaure\n");
    }
    else if( ret == SUCCESS)
    { 
        printf("Init success\n");
    }

    for( i = 0;i < 10; i++)
    {
        ret = EnterQueue(&queue, i + 1);
        if(ret == FATLURE)
         {
         printf("Enter fatlaure\n");
        }
        else if( ret == SUCCESS)
        { 
         printf("Enter %d success\n",i + 1);
        }
    }

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

    ret = GetFront(queue);
    if(ret == FATLURE)
         {
         printf("GetFront fatlaure\n");
        }
        else 
        { 
         printf("GetFront %d\n",ret);
        }

     for(i = 0; i < 3; i++)
     {
         ret = DelQueue(&queue);
         if(ret == FATLURE)
         {
         printf("Delate fatlaure\n");
        }
        else 
        { 
         printf("Success %d\n",ret);
        }
     }

     ret = ClearQueue(&queue);
     if(ret == FATLURE)
        {
         printf("Clear fatlaure\n");
        }
        else 
        { 
         printf("Clear Success\n");
        }

        ret = DesstoryQueue(&queue);
         if( ret == FATLURE)
     {
         printf("Desstory faillure!\n");
     }
     else
     {
         printf("Desstory Success\n");
     }

     ret = GetFront(queue);
    if(ret == FATLURE)
         {
         printf("GetFront fatlaure\n");
        }
        else 
        { 
         printf("GetFront %d\n",ret);
        }

    return 0;

}

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

int InitQueue(Q *q)
{
     Node *p= (Node *)malloc(sizeof(Node));

     if(NULL == p)
     {
         return FATLURE;
     }

     p->next = NULL;

     q->front = q ->rear = p;

     return SUCCESS;
}

int EnterQueue(Q *q, int e)
{
      if(NULL == q)
     {
         return FATLURE;
     }

     if(q ->rear == NULL)
     {
        return FATLURE;
     }

     Node *p= (Node *)malloc(sizeof(Node));
     if(NULL == p)
     {
         return FATLURE;
     }
     p ->date = e;
     p ->next = NULL;

     q ->rear->next = p;
     q ->rear = p;

     return SUCCESS;

}

int LengthQueue(Q q)
{
  int length = 0;
  Node *p = q.front ->next;
  while(p)
  {
      length++;
      p = p ->next;
  }
  return length;

}

int GetFront(Q q)
{
    if(q.front == q.rear)
     {
         return FATLURE;
     }
     return q.front ->next ->date;
}

int DelQueue(Q *q)
{
     if(NULL == q)
     {
         return FATLURE;
     }
    if(q ->rear == q ->front)
     {
         return  FATLURE;
     }

     Node *p = q ->front ->next;
     int e = p ->date;
     q ->front ->next = p ->next;
     free(p);
     if(q ->rear == p)
     {
        q ->rear = q ->front;
     }

     return e;
}

int ClearQueue(Q *q)
{
    if(NULL == q)
    {
        return  FATLURE;
    }
   if(q ->rear == q ->front)
     {
         return  FATLURE;
     }
    Node *p = q ->front ->next;
    while(p)
    {
        q ->front ->next = p ->next;
        free(p);
        p = q ->front ->next;
    }
    q ->rear = q ->front;

    return SUCCESS;
}

int DesstoryQueue(Q *q)
{
    if( NULL == q)
     {
         return  FATLURE;
     }

     free(q ->front);

     q ->front = q ->rear = NULL;
     return SUCCESS;
}
#ifndef QUEUE_H
#define QUEUE_H

#define SUCCESS 10000
#define FATLURE 10001

struct node
{
      int date;
      struct node *next;
};
typedef struct node Node;

struct queue
{
    Node *front;
    Node *rear;
};
typedef struct queue Q;

int InitQueue(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 DesstoryQueue(Q *q);

#endif

1#include

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值