C言語でキューチェーン記憶を実現
14334 ワード
#include
#include
typedef struct QNode *P_QNode;
struct QNode
{
int Data;
P_QNode Next;
};
struct MyQueue
{
P_QNode Front,Rear;
};
typedef struct MyQueue *P_MyQueue;
P_MyQueue CreateQueue()
{
P_MyQueue q=(P_MyQueue)malloc(sizeof(struct MyQueue));
q->Front=q->Rear=NULL;
return q;
}
int IsEmpty(P_MyQueue q)
{
return(q->Front==NULL);
}
void Add(P_MyQueue q,int elem)
{
P_QNode n;
n=(P_QNode)malloc(sizeof(struct QNode));
if(IsEmpty(q))
{
n->Data=elem;
n->Next=NULL;
q->Front=n;
q->Rear=n;
}
else
{
q->Rear->Next=n;
n->Data=elem;
n->Next=NULL;
q->Rear=q->Rear->Next;
}
}
int Dele(P_MyQueue q)
{
if(IsEmpty(q))
{
printf(" ");
return NULL;
}
else
{
P_QNode p;
p=q->Front;
int elem;
elem=q->Front->Data;
q->Front=q->Front->Next;
free(p);
return elem;
}
}
void PrintAll(P_MyQueue q)
{
P_QNode p=q->Front;
while(p)
{
printf("%d ",p->Data);
p=p->Next;
}
}
int main()
{
P_MyQueue Q1=CreateQueue();
while(1)
{
printf(" :
A.
B.
C.
D.
");
char c;
scanf("%c",&c);
if(c=='A')
{
printf(" :");
PrintAll(Q1);
printf("
");
}
else if(c=='B')
{
printf(" :");
int a;
scanf("%d",&a);
Add(Q1,a);
}
else if(c=='C')
{
int a=Dele(Q1);
printf(" :%d",a);
printf("
");
}
else if(c=='D')
{
break;
}
else
{
printf("
");
}
char m=getchar();
}
return 0;
}