队列_链表实现

   1:  // RLC分割.cpp : 定义控制台应用程序的入口点。
   2:  //
   3:   
   4:  #include "stdafx.h"
   5:  #include
  
  
   6:   
   7:  typedef char ElemType;
   8:   
   9:  typedef struct QNode{
  10:      ElemType data;
  11:      QNode *next;
  12:  } QNode , *QueuePtr;
  13:   
  14:  typedef struct{
  15:      QueuePtr front;   //队头指针
  16:      QueuePtr rear;    //队尾指针
  17:  }LinkQueue;
  18:   
  19:  void initQueue(LinkQueue *q){
  20:      /*初始化一个空队列*/
  21:      q->front = q->rear = (QueuePtr)malloc(sizeof(QNode)); /*创建一个头结点,队头队尾指针                                                                指向该结点*/
  22:      if( !q->front) exit(0);     /*创建头结点失败*/
  23:      q->front->next = NULL;     /*头结点指针域置NULL*/
  24:  }
  25:   
  26:  void EnQueue(LinkQueue *q, ElemType e){
  27:      QueuePtr p;
  28:      p = (QueuePtr)malloc(sizeof(QNode));  /*创建一个队列元素结点*/
  29:      if( !p) exit(0);    /*创建结点失败*/
  30:      p->data = e;
  31:      p->next = NULL;
  32:      q->rear ->next = p;
  33:      q->rear = p;
  34:  }
  35:   
  36:  void DeQueue(LinkQueue *q, ElemType *e){
  37:      /*如果队列q不为空,删除q的队头元素,用e返回其值*/
  38:      QueuePtr p;
  39:      if(q->front == q->rear) return;  /*队列为空,返回*/
  40:      p = q->front->next;
  41:      *e = p->data;
  42:      q->front->next = p->next;
  43:      if(q->rear == p) q->rear = q->front;  /*如果队头就是队尾,则修改队尾指针*/
  44:      free(p);
  45:  }
  46:   
  47:  int _tmain(int argc, _TCHAR* argv[])
  48:  {
  49:      ElemType e;
  50:      LinkQueue  q;
  51:      initQueue(&q);           /*初始化一个队列q*/
  52:      printf("Please input a char into a queue/n");
  53:      scanf("%c",&e);
  54:      while(e!='@'){
  55:          EnQueue(&q,e);   /*向队列中输入字符串,以@表示结束*/ 
  56:          scanf("%c",&e);
  57:      }
  58:      printf("The string into the queue is/n");
  59:      while(q.front != q.rear){   /*将队列中的元素出队列,并打印在屏幕上*/
  60:          DeQueue(&q,&e);
  61:          printf("%c",e);
  62:      }
  63:      printf("/n");
  64:      system("pause");
  65:      return 0;
  66:  }
  67:   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值