c语言 队列基本操作,队列的基本操作(c语言版).doc

队列的基本操作(c语言版)

#include

#include

typedef int elemType;

struct QueuePtr{

elemType data;

struct QueuePtr *next;

};

struct LinkQueue{

struct QueuePtr *front;

struct QueuePtr *rear;

};

void initQueue(struct LinkQueue *Q)

/*第一个操作构造一个空队列q*/

{

Q->front = Q->rear = NULL;

/* 把队首和队尾指针置空 */

return;

}

void push(struct LinkQueue *Q, elemType x)

/*第二个操作插入元素e为q的新的队尾元素 */

{

/* 得到一个由newP指针所指向的新结点 */

struct QueuePtr *newP;

newP = (struct QueuePtr*)malloc(sizeof(struct QueuePtr));

if(newP == NULL){

printf("内存空间分配失败! ");

exit(1);

}

/* 把x的值赋给新结点的值域,把新结点的指针域置空 */

newP->data = x;

newP->next = NULL;

/* 若链队为空,则新结点即是队首结点又是队尾结点 */

if(Q->rear == NULL){

Q->front = Q->rear = newP;

}

else{

/* 若链队非空,则依次修改队尾结点的指针域和队尾指针,使之指向新的队尾结点 */

Q->rear = Q->rear->next = newP;

/*可以分两句话来写*/

}

}

elemType pop(struct LinkQueue *Q)

/*第三个操作队列不为空,则删除q的队头元素,用e返回其值,并返回ok; */

{

struct QueuePtr *p;

elemType temp;

/* 若链队为空则停止运行 */

if(Q->front == NULL){

printf("队列为空,无法删除! ");

exit(1);

}

temp = Q->front->data;

/* 暂存队尾元素以便返回 */

p = Q->front;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值