第三天日志

苏嵌日志3
姓名:王心成 日期:2018 9.12
今日学习任务: 队列的学习

今日任务完成情况: 分别用顺序存储方式和链式存储方式编写了队列的代码。
今日开发中出现的问题汇总:
链式存储队列出队、清空队列、销毁队列的代码还不懂
今日未解决问题: 程序运行出错,
今日开发收获:了解了队列,以及用顺序存储、链式存储编写队列的程序
自我评价: 写代码速度还要提高,可以跟着老师一起编码

队列结构
特点:先进先出
队头front(取出数据) 队尾rear(存放数据)
进队:操作队尾 出队:操作对头
类型:顺序存储 链式存储
队列的顺序存储用 循环队列
空队:队头 队尾重合
队尾指针指向最后一个元素的后一个
队列容量:最大值减一
循环队列长度:(rear - front + MAXSIZE)% MAXSIZE
判断队列是否已满:(rear + 1) % MAXSIZE == front“

include”queue.h”

include”stdio.h”

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

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

for(i=0;i<10;i++)
{
  ret=EnterQueue(queue,i+1);
   if(ret ==SUCCESS)
   {
      printf("Enter %d Success!\n",i+1);

   }
   else
   {
      printf("Enter Failure!\n");
   }

}
  for (i=0;i<6;i++)
  {
    ret = DeleteQueue(queue);
    if(ret == FAILURE)
      {
          printf("Delete Failure!\n");        
      }
      else 
      {
        printf("Delete %d Success!\n",ret);
      }
  }

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

return 0;
}

include “queue.h”

include “stdlib.h”

int InitQueue(Q **q)
{
if(NULL==q) //入参判断
{
return FAILURE;
}
(q)=(Q )malloc(sizeof(Q)); //给队列信息申请空间

 if(NULL==(*q))
 {
    return FAILURE;
 } 
Node *p=(Node*)malloc(sizeof(Node)); //头结点申请空间
if(NULL==p)

{
return FAILURE;
}

(*q)->front =(*q)->rear=p; //队头指针 对尾指针都指向头结点
return SUCCESS;

}

int EnterQueue(Q *q, int e)
{
    if(NULL==q)
    {

       return FAILURE;

    }

    Node *p =(Node *)malloc(sizeof(Node));
    if(NULL==p)
    {
       return FAILURE;

    }     

    p->next =NULL;
    p->data =e;

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

     return SUCCESS;

}
int DeleteQueue(Q *q)
{
if(NULL==q)
{
 return FAILURE;

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

Node *p =q->front->next;
int e  = p->data;
q->front->next=p->next;
free(p);

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

int LengthQueue(Q *q)
{
if(NULL== q)
{
return FAILURE;
}

 int length=0;

 Node *p= q->front ->next;
 while (p)
 {
   length++;
 }

ifndef QUEUE_H

define QUEUE_H

define SUCCESS 1000

define FAILURE 1001

struct mode //结点的信息
{
int data; //数据域
struct mode *next; //指针域
};
typedef struct mode Node;

struct queue //队列的信息
{
Node *front; //队头指针
Node *rear; //队尾指针
};

typedef struct queue Q;

int InitQueue(Q **q);
int EnterQueue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值