链式队列

来源:互联网 发布:淘宝客服有提成吗 编辑:程序博客网 时间:2024/06/04 05:00
#include<iostream>#include<cstdio>#include<stdlib.h>#include<malloc.h>#define LIST_INIT_SIZE 10//线性表初始长度 #define LISTINCREMENT 10//增量 #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2using namespace std;typedef struct qnode{    int data;    struct qnode* next;}ElemType;//设置线性表中存放的数据类型 typedef int Status;typedef struct{    ElemType* front;    ElemType* rear;}LinkQueue;Status EmptyQueue(LinkQueue&q){    if(q.front==q.rear)return OK;    return ERROR;}Status InitQueue(LinkQueue& q){    q.front=q.rear=(ElemType*)malloc(sizeof(ElemType));    if(!q.front)exit(OVERFLOW);    q.front->next=NULL;}Status DestoryDeque(LinkQueue& q){//注意摧毁队列和清空队列的区别,摧毁连同头结点一起free     while(q.front){        q.rear=q.front->next;        free(q.front);        q.front=q.rear;    }    return OK;}Status EnQueue(LinkQueue& q,ElemType e){    ElemType*t=(ElemType*)malloc(sizeof(ElemType));    if(!t)exit(OVERFLOW);    t->data=e.data;    q.rear->next=t;    q.rear=t;    return OK;}Status Dequeue(LinkQueue& q,ElemType&e){    if(EmptyQueue(q)){        return ERROR;    }    ElemType*p=q.front->next;    e=*(q.front->next);    q.front->next=p->next;    if(q.rear==p)q.rear=q.front;    free(p);    return OK;}int main(){}
原创粉丝点击