链队列简单操作(c语言)

#include     
#include 

#define ERROR 0
    
struct Node{    
    int Data;    
    struct Node *Next;    
};    
    
struct QNode{    
    struct Node *rear;    
    struct Node *front;    
};
typedef struct QNode *Queue;  

//创建队列
Queue CreateQueue();
//删除队列头元素
int DeleteQ(Queue PtrQ); 
//在队尾插入元素
void InsertQ(int item,Queue PtrQ);
//打印队列
void Print(Queue PtrQ);
//判断是否空  
int IsEmpty(Queue Q);
  
    
int main()    
{    
    Queue PtrQ=CreateQueue();
	Print(PtrQ);
    InsertQ(1,PtrQ);
    InsertQ(2,PtrQ);
	InsertQ(3,PtrQ);
    Print(PtrQ);
	DeleteQ(PtrQ);
	Print(PtrQ);
    InsertQ(1,PtrQ);
    Print(PtrQ);
	DeleteQ(PtrQ);
	DeleteQ(PtrQ);
	DeleteQ(PtrQ);
    Print(PtrQ);

    return 0;    
}    
 
Queue CreateQueue(){
	Queue PtrQ;  
    PtrQ=(Queue)malloc(sizeof(struct QNode));
	struct Node *rear;
	struct Node *front;
	rear =(Node*)malloc(sizeof(struct Node));
    rear=NULL;
    front =(Node*)malloc(sizeof(struct Node));
    front=NULL;
	PtrQ->front=front;
	PtrQ->rear=rear;
    return PtrQ;
};

int DeleteQ(Queue PtrQ){    
    struct Node *FrontCell;    
    int FrontElem;    
    
    if(IsEmpty(PtrQ)){    
        printf("队列空");    
        return ERROR;    
    }  
    FrontCell=PtrQ->front;  
    if(PtrQ->front==PtrQ->rear)  
       PtrQ->front=PtrQ->rear=NULL;  
    else{  
        PtrQ->front=PtrQ->front->Next;  
    }  
      FrontElem=FrontCell->Data;  
      free(FrontCell);  
      return FrontElem;    
}    
  
void InsertQ(int item,Queue PtrQ){  
    struct Node *FrontCell;  
    FrontCell=(Node*)malloc(sizeof(struct Node));
	FrontCell->Data=item;
	FrontCell->Next=NULL;

	if(IsEmpty(PtrQ)){
		PtrQ->front=FrontCell;
		PtrQ->rear=FrontCell;
	}
	else{
		PtrQ->rear->Next=FrontCell;
		PtrQ->rear=FrontCell;
	}
};   
    
void Print(Queue PtrQ) {      
    struct Node *Q1;      
    Q1 = PtrQ->front;      
        if (Q1 == NULL) {      
            printf("NULL\n");      
            return;      
        }      
        while (Q1 != PtrQ->rear) {      
            printf("%d ", Q1->Data);  
			Q1 =Q1->Next;      
        }  
        printf("%d", Q1->Data);  
        putchar('\n');      
    }     

int IsEmpty(Queue Q){
	 return(Q->front==NULL);  
}; 

你可能感兴趣的:(data,structure,c)