#include<stdlib.h>
#include<stdio.h>
//#include<malloc.h>
typedef struct Node{
int element;
struct Node *next;
}node,*pNode;
typedef struct Qnode{
pNode Front ,Rear;
}Queue,*PQueue;
void initqueue(PQueue queue){
queue->Front=queue->Rear=(pNode)malloc(sizeof(node));
if(queue->Front==NULL){
printf("分配的空间错误!");
exit(-1);
}
queue->Front->next=NULL;
printf("创建队列yes!\n");
}
bool isempty_queue(PQueue queue){
if(queue->Front!=NULL){
printf("该队列存在!\n");
return true;
}else{
printf("该队列不存在!\n");
exit(-1);
return false;
}
}
void insertqueue(PQueue queue,int val){
pNode p=(pNode)malloc(sizeof(node));
if(p==NULL){
printf("分配的空间错误!");
exit(-1);
}
p->element=val;
p->next=NULL;
queue->Rear->next=p;
queue->Rear=p;
printf("队列值%d成功!\n",val);
}
void scan_queue(PQueue queue){
pNode p=queue->Front->next;
printf("遍历结果为");
while(p!=NULL){
printf("%d ",p->element);
p=p->next;
}
printf("遍历完成!");
}
void delete_queue_member(PQueue queue,int val){// 通常只能删除首元素
pNode p=queue->Front->next;
p->element=val;
queue->Front->next=p->next;
if(queue->Rear==p)
queue->Rear=queue->Front;
free(p);
p=NULL;
printf("出队列成功%d\n",val);
}
void clear_queue_all_member(PQueue queue){
pNode p=queue->Front->next;
pNode Q=NULL;
queue->Rear=queue->Front;
queue->Front->next=NULL;
while(p!=NULL){
Q=p;
p=p->next;
free(Q);
}
printf("队列清空!");
}
void destory_queue(PQueue queue){
while(queue->Front!=NULL){
queue->Rear=queue->Front->next;
free(queue->Front);
queue->Front=queue->Rear;
}
printf("队列被摧毁!");
}
int main(){
Queue queue;
initqueue(&queue);
isempty_queue(&queue);
for(int i=0;i<8;i++)
insertqueue(&queue,i);
isempty_queue(&queue);
scan_queue(&queue);
isempty_queue(&queue);
delete_queue_member(&queue,1);
scan_queue(&queue);
isempty_queue(&queue);
clear_queue_all_member(&queue);
scan_queue(&queue);
destory_queue(&queue);
return 0;
}
转载的,但是已经忘记出处呢。