美文网首页
Daya-Structure-Queue

Daya-Structure-Queue

作者: Pwnmelife | 来源:发表于2019-01-13 16:49 被阅读0次
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

typedef char ElemType;
typedef struct QNode{
    ElemType data;
    struct QNode *next;
}QNode, *QNodePtr;

typedef struct {
    QNodePtr front, rear;
}Queue, *QueuePtr;

void InitQueue(QueuePtr *q); //初始化
void InsertQueue(QueuePtr *q, ElemType c); //入队
void DeleteQueue(QueuePtr *q, ElemType *c);//出队
void ClearQueue(QueuePtr *q); //销毁队列

int main()
{
    char s[256];
    QueuePtr *q = (QueuePtr *)malloc(sizeof(QueuePtr));
    InitQueue(q);
    scanf("%s", s);
    int i = 0;
    while (s[i] != '\0') {
        InsertQueue(q, s[i++]);
    }
    ClearQueue(q);
    return 0;
}
void InitQueue(QueuePtr *q) {
    (*q) = (QueuePtr)malloc(sizeof(Queue));
    (*q)->front = (*q)->rear = (QNodePtr)malloc(sizeof(QNode)); //头结点
    (*q)->front->next = NULL;
}
void InsertQueue(QueuePtr *q, ElemType c) {
    QNodePtr qNode = (QNodePtr)malloc(sizeof(QNode));
    qNode->data = c;
    qNode->next = NULL;
    (*q)->rear->next = qNode;
    (*q)->rear = qNode;
}
void DeleteQueue(QueuePtr *q, ElemType *c) {
    if ((*q)->front == (*q)->rear) {
        printf("The Queue is empty\n");
        return;
    }
    QNodePtr headNode = (*q)->front;
    QNodePtr firstNode = headNode->next;
    *c = firstNode->data;
    headNode->next = firstNode->next;
        if ((*q)->rear == firstNode) {
         (*q)->rear = (*q)->front;
    }
    free(firstNode);
}
void ClearQueue(QueuePtr *q) {
    char c;
    while ((*q)->front == (*q)->rear) {
        DeleteQueue(q, &c);
        printf("%c ", c);
    }
}

网友评论

      本文标题:Daya-Structure-Queue

      本文链接:https://www.haomeiwen.com/subject/kdkldqtx.html