8/5数据结构队列

循环队列

main.c

#include<stdio.h>
#include<stdlib.h>
#include "./03_func.h"

int main(){
    Seq* sq = CreateSeq();
    Insert_Seq(sq,10);
    Insert_Seq(sq,20);
    Insert_Seq(sq,30);
    Insert_Seq(sq,40);
    Display_Seq(sq);
    datatype num;                  
    num = Output_Seq(sq);
    printf("%d\n ",num);
    Display_Seq(sq);

    num = Output_Seq(sq);
    printf("%d\n ",num);
    Display_Seq(sq);


}
                                   

func.c

#include<stdio.h>                                 
#include<stdlib.h>                                
#include "./03_func.h"                            
                                                  
//创建队列                                        
Seq* CreateSeq(){                                 
    Seq* sq = (Seq*)malloc(sizeof(Seq));          
    if(NULL == sq){                               
        printf("创建队列失败");                   
        return NULL;                              
    }                                             
    sq->fron = sq->rear= 0;                       
                                                  
    return sq;                                    
}                                                 
//入队                                            
void Insert_Seq(Seq* sq,datatype num){            
    if(isFull_Seq(sq) == 1){                      
        printf("队列已满,入队失败");             
        return;                                   
    }                                             
    sq->data[sq->rear] = num;                     
    //更新rear                                    
    sq->rear = (sq->rear+1)%N;                    
    return;                                       
}                                                 
                                                  
//出队                                            
datatype Output_Seq(Seq* sq){                     
    if(sq->rear == sq->fron)                      
        return (datatype)-1;                      
    datatype num = sq->data[sq->fron];            
    sq->fron = (sq->fron+1)%N;                    
    return num;                                   
}                                                 
//显示                                             
void Display_Seq(Seq* sq){                         
    for(int i = sq->fron; i!=sq->rear; i=(i+1)%N)  
        printf("%d ",sq->data[i]);                 
    putchar(10);                                   
    return ;                                       
}                                                  
//判满                                             
int isFull_Seq(Seq* sq){                           
    return (sq->rear+1) % N == sq->fron ? 1:0;     
}                                                  
                                                    

func.h

#ifndef __func__                              
#define __func__                              
                                              
#define N 10                                  
                                              
typedef int datatype;                         
                                              
typedef struct {                              
    datatype data[N];                         
    int fron;                                 
    int rear;                                 
} Seq;                                        
                                              
                                              
Seq* CreateSeq();                             
datatype Output_Seq(Seq* sq);                 
void Display_Seq(Seq* sq);                    
int isFull_Seq(Seq* sq);                      
void Insert_Seq(Seq* sq,datatype num);        
#endif                                        
                                              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值