数据结构 day09 基础知识学习 (利用数组建立队列)

一.知识都在代码里面!

二.有四个文件

1queue.c

2.queue.h

3.main.c

4.makefile


三.代码

1.queue.h

#ifndef __QUEUE_H__
#define __QUEUE_H__
#define SIZE 10
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<stdbool.h>
#include<time.h>

typedef struct queue 
{
    int W[SIZE];
    int front;
    int back;

}queue,*pqueue;


queue*   sxb_queue_init(); //队列初始化
bool  sxb_queue_empty(queue *p); //判断队列是否为空
bool  sxb_queue_full(queue *p);  //判断队列是否满了
void sxb_queue_push(queue* p,int data);  //入队列
void sxb_queue_pop(queue* p);  //出队列
void sxb_queue_delete(queue* p); //清空队列的元素
void sxb_queue_print(queue* p);  //打印队列的元素




#endif

queue.c

/************************************************************************************************************************************************************************************************************************
 *文件名:
 *作  者:She001
 *时  间:
 *版  本:
 *作  用:
****************************************************************************************************************************************************************************************************************************/
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<stdbool.h>
#include<time.h>
#include"queue.h"
queue*   sxb_queue_init()//队列初始化
{
       queue* head =(queue*)malloc(sizeof(queue));
       head->front=-1;
       head->back=-1;
       bzero(head->W,sizeof(head->W));
       return head;

}

bool  sxb_queue_empty(queue *p) //判断队列是否为空
{
       if(p==NULL)
       {
              printf("传入的指针为空!\n"); 
       }
       if(p->back==-1&& p->front==-1)
       {
              return true;
       }
       if(p->back==p->front)
       {
              return true ;
       }
       return false;
}
bool  sxb_queue_full(queue *p)  //判断队列是否满了
{
       if((p->back+1)%SIZE== p->front)
       {
              return true; 
       }
       if(p->front==-1 && p->back==SIZE-2)
       {      
              return true; 
       }
       return false;
}
void sxb_queue_push(queue* p,int data)  //入队列
{
       if(sxb_queue_full  (p))
       {
              printf("队列满了!\n");
              return;
       }
       p->back =(p->back+1)%SIZE;
       p->W[p->back]=data;    
}
void sxb_queue_pop(queue* p)  //出队列
{
       if(sxb_queue_empty(p))
       {
              printf("队列空了!\n");
              return ;
       }
       p->front=(p->front+1)%SIZE;
}
void sxb_queue_delete(queue* p) //清空队列的元素
{
       p->front=-1;
       p->front=-1;
}
void sxb_queue_print(queue* p)  //打印队列的元素
{
       for(int i=(p->front+1)%SIZE; i!=(p->back+1)%SIZE;i++)
       {
              printf("%d\t",p->W[i]);
       }
       printf("\n");
}

3.main.c

/************************************************************************************************************************************************************************************************************************
 *文件名:
 *作  者:She001
 *时  间:
 *版  本:
 *作  用:
****************************************************************************************************************************************************************************************************************************/
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<stdbool.h>
#include<time.h>
#include "queue.h"
int main(int argc,char *argv[])
{
       queue* q=sxb_queue_init();
       for(int i=0;i<10;i++)
       {
              sxb_queue_push(q,i);
       }
       sxb_queue_print(q);
       for(int i=0;i<12;i++)
       {
              sxb_queue_pop(q);
       }
       sxb_queue_print(q);


       return 0;

}

4.makefile

queue_w: main.o  queue.o 
	gcc -g -o queue_w main.o queue.o 
main.o :main.c
	gcc -g -c main.c -o main.o
queue.o : queue.c 
	gcc -g -c queue.c  -o  queue.o

四: 建议大家去看看大佬的, 这里有一个难点,在数组的有限空间利用 下的栈空,和栈满的判断。,我的代码没写很多注释 ,因为我解释不清!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值