队的链式实现

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef char QElemType;
typedef int Status;
typedef struct QNode
{
 QElemType data;
    
 struct QNode *next;

} QNode,*QueuePtr;


typedef struct
{
  QueuePtr front;

  QueuePtr rear;

}LinkQueue;


Status InitQueue(LinkQueue *Q)
{
 Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));//指向头结点
 if(!Q->front) exit(0);
 Q->front->next=NULL;
 return 1;
}

Status EnQueue (LinkQueue *Q,QElemType e)
{
  QueuePtr p;
  p=(QueuePtr)malloc(sizeof(QNode));
  p->data=e;
  p->next=NULL;
  Q->rear->next=p;
  Q->rear=p;
  return 1;
}

Status DeQueue (LinkQueue *Q)
{
  QueuePtr p;
  if(Q->front==Q->rear) return 0;
  p=Q->front->next;
  Q->front->next=p->next;
  if(Q->rear==p) Q->rear=Q->front;
  free(p);
  return 1;
}

Status GetHead(LinkQueue Q,QElemType *p)
{
 if(Q.front==Q.rear) return 0;
 *p=Q.front->next->data;
 return 1;
}

Status DestroyQueue(LinkQueue *Q)
{
  while(Q->front)
  {
    Q->rear=Q->front->next;
    free(Q->front);
    Q->front=Q->rear;
  }

  return 1;
}

Status TraverseQueue(LinkQueue *Q)
{
 QueuePtr p=Q->front->next;
 while(p)
 {
  printf("%c ",p->data);
  p=p->next;
 }
 return 1;


}

//测试呵呵!

void main()
{
  LinkQueue Q;
  char ch;
  int n;
  InitQueue(&Q);
  while((ch=getchar())!='@')
  {
    EnQueue (&Q,ch);
 
  }
  TraverseQueue(&Q);
  printf("\n");
  printf("请输入要出队的元素的个数\n");
  scanf("%d",&n);
  while(n>0)
  {
    DeQueue (&Q);
 n--;
  }
  TraverseQueue(&Q);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值