链队列出入队列c语言程序,链队列简单操作(c语言)

#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);

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值