#include <stdio.h>
#include <stdlib.h>
#define DataType int
typedef 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;
}
循环队列的基本用法(链式存储结构)
最新推荐文章于 2024-07-26 18:54:25 发布