实现的时候遇到了简单问题。传指针进去才行。
#include
#include
#include
#define maxn 20
using namespace std;
typedef struct QNode {
int data;
struct QNode *next;
}QNode;
typedef struct LinkQueue{
QNode * front;
QNode * rear;
}LinkQueue;
int InitQueue(LinkQueue *Q){
Q->rear = Q->front = (QNode*) malloc(sizeof(QNode));
}
int destoryQueue(LinkQueue *Q) {
while(Q->front) {
Q->rear = Q->front->next;
free(Q->front);
Q->front = Q->rear;
}
}
int DeQueue(LinkQueue *Q, int &e) {
if(Q->front == Q->rear) return 0;
QNode * qNode = Q->front;
e = qNode->data;
Q->front = Q->front->next;
free(qNode);
}
int EnQueue(LinkQueue *Q, int value) {
QNode * qNode = (QNode *) malloc(sizeof(QNode));
qNode->data = value;
qNode->next = NULL;
Q->rear->next = qNode;
Q->rear = Q->rear->next;
}
int main()
{
LinkQueue *Q = (LinkQueue*) malloc(sizeof (LinkQueue));
InitQueue(Q);
for(int i = 1; i<= maxn; i ++) {
EnQueue(Q,i);
}
int e;
while(Q->front != Q->rear) {
DeQueue(Q,e);
printf("%d ",e);
}
printf("\n");
return 0;
}
找到问题了,更新了实现方式。指针的访问必须用->,还要注意分配内存。
#include
#include
#include
#define maxn 20
using namespace std;
typedef struct QNode {
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct LinkQueue{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
int InitQueue(LinkQueue *Q){
Q->rear = Q->front = (QNode*) malloc(sizeof(QNode));
}
int destoryQueue(LinkQueue *Q) {
while(Q->front) {
Q->rear = Q->front->next;
free(Q->front);
Q->front = Q->rear;
}
}
int DeQueue(LinkQueue *Q, int &e) {
if(Q->front == Q->rear) return 0;
QueuePtr qNode = Q->front;
e = qNode->data;
Q->front = Q->front->next;
free(qNode);
}
int EnQueue(LinkQueue *Q, int value) {
QueuePtr qNode = (QNode *) malloc(sizeof(QNode));
qNode->data = value;
qNode->next = NULL;
Q->rear->next = qNode;
Q->rear = Q->rear->next;
}
int main()
{
LinkQueue *Q = (LinkQueue*) malloc(sizeof (LinkQueue));
InitQueue(Q);
for(int i = 1; i<= maxn; i ++) {
EnQueue(Q,i);
}
int e;
while(Q->front != Q->rear) {
DeQueue(Q,e);
printf("%d ",e);
}
printf("\n");
return 0;
}