• 队列


      1 #include <stdio.h>
      2 #include <string.h>
      3 #include <stdlib.h>
      4 
      5 typedef int QElemType;
      6 
      7 typedef struct QNode{
      8     QElemType data;
      9     struct QNode *next;
     10 }QNode, *QueuePtr;
     11 
     12 typedef struct{
     13     QueuePtr front;     //头指针
     14     QueuePtr rear;      //尾指针
     15 }LinkQueue;
     16 
     17 int InitQueue(LinkQueue *Q);
     18 int DestroyQueue(LinkQueue *Q);
     19 int ClearQueue(LinkQueue *Q);
     20 int QueueEmpty(LinkQueue *Q);
     21 int QueueLength(LinkQueue Q);
     22 int GetHead(LinkQueue Q, QElemType *e);
     23 int InsertQueue(LinkQueue *Q, QElemType e);
     24 int DelQueue(LinkQueue *Q, QElemType *e);
     25 int PrintQueue(LinkQueue Q);
     26 
     27 //初始化队列
     28 int InitQueue(LinkQueue *Q){
     29     Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));
     30     if(!Q->front){
     31         perror("malloc error ");
     32         return -1;
     33     }
     34     Q->front->next = NULL;
     35     Q->front->data = 0;
     36     return 0;
     37 }
     38 
     39 //销毁队列
     40 int DestroyQueue(LinkQueue *Q){
     41     while(Q->front){
     42         Q->rear = Q->front->next;
     43         free(Q->front);
     44         Q->front = Q->rear;
     45     }
     46     Q = NULL;
     47     return 0;
     48 }
     49 
     50 //清空队列
     51 int ClearQueue(LinkQueue *Q){
     52     return 0;
     53 }
     54 
     55 //判断队列是否为空
     56 int QueueEmpty(LinkQueue Q){
     57     if(Q.front == Q.rear){
     58         return 1;
     59     }
     60     else{
     61         return 0;
     62     }
     63 }
     64 
     65 //球队列长度
     66 int QueueLength(LinkQueue Q){
     67     return Q.front->data;
     68 }
     69 
     70 //球队列的头指针
     71 int GetHead(LinkQueue Q, QElemType *e){
     72     if(Q.front->next == NULL){
     73         perror("Queue is empty! ");
     74         *e = -1;
     75         return -1;
     76     }
     77     *e = Q.front->next->data;
     78     return 0;
     79 }
     80 
     81 //将元素e插入队列
     82 int InsertQueue(LinkQueue *Q, QElemType e){
     83     QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
     84     if(p == NULL){
     85         perror("malloc error! ");
     86         return -1;
     87     }
     88     p->data = e;
     89     p->next = NULL;
     90     (Q->rear)->next = p;
     91     Q->rear = p;
     92     Q->front->data++;
     93     return 0;
     94 }
     95 
     96 //删除队列中的元素e
     97 int DelQueue(LinkQueue *Q,QElemType *e){
     98     if(Q->front == Q->rear){
     99         perror("The queue is empty! ");
    100         return -1;
    101     }
    102     QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
    103     p = Q->front->next;
    104     *e = p->data;
    105     Q->front->next = p->next;
    106     if(Q->rear == p){
    107         Q->rear = Q->front;
    108     }
    109     free(p);
    110     Q->front->data--;
    111     return 0;
    112 }
    113 
    114 //输出队列
    115 int PrintQueue(LinkQueue Q){
    116     Q.front = Q.front->next;
    117     while(Q.front != NULL){
    118         printf("%d-----", Q.front->data);
    119         Q.front = Q.front->next;
    120     }
    121     return 0;
    122 }
    123 
    124 int main(){
    125     return 0;
    126 }
  • 相关阅读:
    JAVA内存溢出解析(转)
    检查SQL Server 2005的索引密度和碎片信息(转)
    GWT 学习总结
    支付宝techday分享成长、团队、信任
    一位年轻董事长给年轻人的30条忠告
    Oracle 培训材料
    利用JProfiler对应用服务器内存泄漏问题诊断一例(转)
    oracle 笔记
    JProfiler 使用说明
    最疼你的人是谁
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/4027506.html
Copyright © 2020-2023  润新知