69,382
社区成员
发帖
与我相关
我的任务
分享
//#include "stdafx.h"
#include<stdio.h>
//#include<malloc.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node * next;
}NODE, *PNODE;
typedef struct
{
PNODE rear, front;
}queue;
void init(queue*);
void insert(queue*, int val);
void show(queue*);
void dequeue(queue*, int *);
int main(void)
{
int val;
queue q;
init(&q);
insert(&q, 1);
insert(&q, 12);
insert(&q, 13);
insert(&q, 14);
show(&q);
dequeue(&q, &val);
printf("%d\n", val);
return 0;
}
void init(queue* q)
{
q->front = q->rear = (PNODE)malloc(sizeof(NODE));
if (q->front == NULL)
exit(-1);
q->rear->next = NULL;
return;
}
void insert(queue* q, int val)
{
PNODE p = (PNODE)malloc(sizeof(NODE));
if (p == NULL)
exit(-1);
p->data = val;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
void show(queue* q)
{
PNODE p = q->front;
if (!p) {
fprintf(stdout, "queue is empty!\n");
return;
}
p = q->front->next;
while (p)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
void dequeue(queue * q, int *val)
{
PNODE p = q->front->next;
*val = p->data;
q->front->next = p->next;
free(p);
return;
}
show函数逻辑有问题; 详见上面的代码