#include <stdio.h>
#include <stdlib.h>
#include "queue.h"
int main()
{
Queue line;
Item *temp;
char ch;
Initializequeue(&line);
puts("enter a to add a letter ");
puts("enter d to delete a letter");
puts("enter a q to quit");
while((ch=getchar())!='q')
{
if(ch=='a')
{
if(!Queueisfull(&line))
{
puts("enter an integer");
Enqueue(&line);
}
else puts("full!!!");
}
else if(ch=='d')
{
if(Queueisempty(&line))
puts("nothing to delete!");
else
{
if(Dequeue(&line,temp)==false)
puts("Delete error");
else
printf("%d has been deleted",*temp);
}
}
printf("%d left now\n",Queuecount(&line));
puts("enter a to add a letter ");
puts("enter d to delete a letter");
puts("enter a q to quit");
while(getchar()!='\n')
continue;
}
Emptythequeue(&line);
puts("bye!");
return 0;
}
/*queue.h*/
#ifndef _QUEUE_H_
#define _QUEUE_H_
#include <stdbool.h>
#define MAXQUEUE 10
typedef int Item;
typedef struct node{
Item item;
struct node* next;
}Node;
typedef struct queue{
Node * front;
Node * rear;
int items;
}Queue;
void Initializequeue(Queue* pq);
bool Queueisfull(Queue* pq);
bool Queueisempty(Queue* pq);
int Queuecount(Queue* pq);
bool Enqueue(Queue* pq);
bool Dequeue(Queue* pq,Item *pitem);
void Emptythequeue(Queue* pq);
#endif
#include <stdio.h>
#include <stdlib.h>
#include "queue.h"
void Initializequeue(Queue* pq)
{
pq->rear=pq->front=NULL;
}
bool Queueisfull(Queue* pq)
{
return pq->items==MAXQUEUE;
}
bool Queueisempty(Queue* pq)
{
return pq->items==0;
}
int Queuecount(Queue* pq)
{
return pq->items;
}
bool Enqueue(Queue* pq) //pq是一个指向Queue的指针 Node*是一个指向Node的指针
{ //关联是Queue->front指向一个Node的结构
Node* pt;
pt=(Node*)malloc(sizeof(Node));
scanf("%d",&pt->item);
pt->next=NULL;
//Node* p=pq->front;
if(pq->front==NULL)
pq->front=pt;
else
pq->rear->next=pt;
pq->rear=pt;
pq->items++;
};
bool Dequeue(Queue* pq,Item *pitem)
{
if(Queueisempty(pq))
return false;
*pitem=pq->front->item;
Node* p=pq->front->next;
free(pq->front);
pq->front=p;
pq->items--;
return true;
}
void Emptythequeue(Queue* pq)
{
Item dummy;
while(!Queueisempty(pq))
Dequeue(&dummy,pq);
}
为什么进行Dequeue操作时出现degmentation fault ,感觉应该Enqueue或者Dequeue的问题 着重看这两段就好了