循环队列的基本用法(链式存储结构)

来源:互联网 发布:php require once地址 编辑:程序博客网 时间:2024/04/30 04:44
#include <stdio.h>#include <stdlib.h>#define  DataType inttypedef struct Node{    DataType      Data;    struct Node   *Next;}QNode;typedef struct LNode{    QNode *Front;    QNode *Rear;}LNode;LNode  *Initial_LNode(void);int    IsEmptyLNode(LNode *Head);int    EnterLNode(LNode *Head, DataType Elem);int    OutLNode(LNode *Head,DataType Elem);LNode  * Initial_LNode(void){  LNode  *Head=NULL;  QNode  *p   =NULL;  Head=(LNode *)malloc(sizeof(LNode));  Head->Front=NULL;  Head->Rear =NULL;  p=(QNode *)malloc(sizeof(QNode));  p->Data=-1;  p->Next=NULL;  Head->Front=p;  Head->Rear =p;  return Head;}int    IsEmptyLNode(LNode *Head){    return(Head->Front==NULL);}int    EnterLNode(LNode *Head, DataType Elem){    QNode *p=NULL;    QNode *q=NULL;    p=(QNode *)malloc(sizeof(QNode));    p->Data=Elem;    printf("Elem that enter the queue : %d\n",p->Data);    p->Next=NULL;    q=Head->Rear;    q->Next=p;    Head->Rear=p;    return 0;}int    OutLNode(LNode *Head,DataType Elem){    QNode *p=NULL,*q=NULL;   if(IsEmptyLNode(Head))   {       printf("Empty queue,ends the program.\n");       exit(0);   }   else   {       p=Head->Front;       q=p->Next;       p->Next=q->Next;       Head->Rear=q->Next;       Elem=q->Data;       printf("Elem that out the queue : %d\n",Elem);       free(q);       q=NULL;       return 0;   }}int main(void){    LNode          *Head=NULL;    DataType       Elem=0;    Head=Initial_LNode( );    EnterLNode(Head,1);    EnterLNode(Head,2);    EnterLNode(Head,3);    OutLNode(Head,Elem);    OutLNode(Head,Elem);    return 0;}


0 0
原创粉丝点击