这个链队列不知道哪里出错了啊

Rookie_Allen 2008-09-02 02:50:36
#include<stdio.h>
#include<stdlib.h>
typedef char datatype;
typedef struct node
{
datatype data;
struct node *next;
}linklist;

typedef struct
{
linklist *front,*rear;
}linkqueue;

void SETNULL(linkqueue *q)//置队列空
{
q=(linkqueue *)malloc(sizeof(linkqueue));
q->front->next=0;
q->rear=q->front;
}

int EMPTY(linkqueue *q)//判队列空
{
if(q->front==q->rear)return 1;
else
return 0;
}

void ENQUEUE(linkqueue *q,datatype x)//入队列
{
q->rear->next=(linkqueue *)malloc(sizeof(linkqueue));
q->rear=q->rear->next;
q->rear->data=x;
q->rear->next=0;
}

datatype DEQUEUE(linkqueue *q)//出队列
{
linklist *s;
if(EMPTY(q))
{printf("queue is empty.\n");return 0;}
else
{
s=q->front;
q->front=q->front->next;
free(s);
return q->front->data;
}
}

datatype FRONT(linkqueue *q)
{
if(EMPTY(q))
{printf("queue is empty.\n");return 0;}
else
return q->front->next->data;
}

void main()
{
linkqueue *q;
datatype x=1,y=2,z=3;
SETNULL(q);
ENQUEUE(q,x);
printf("%d enqueue\n",q->rear->data);
ENQUEUE(q,y);
printf("%d enqueue\n",q->rear->data);
ENQUEUE(q,z);
printf("%d enqueue\n",q->rear->data);
x=DEQUEUE(q);
printf("%d dequeue\n",q->front->data);
y=DEQUEUE(q);
printf("%d dequeue\n",q->front->data);
z=DEQUEUE(q);
printf("%d dequeue\n",q->front->data);
}
...全文
58 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rookie_Allen 2008-09-03
  • 打赏
  • 举报
回复
谢谢CWC270,经常得到你的帮助!
cwc270 2008-09-02
  • 打赏
  • 举报
回复
问题比较多

#include <stdio.h>
#include <stdlib.h>
typedef char datatype;
typedef struct node
{
datatype data;
struct node *next;
}linklist;

typedef struct
{
linklist *front,*rear;
}linkqueue;

void SETNULL(linkqueue *&q)//置队列空
{
q=(linkqueue *)malloc(sizeof(linkqueue));
q->front=NULL;
q->rear=NULL;
}

int EMPTY(linkqueue *q)//判队列空
{
if(q==NULL || q->front==NULL)
return 1;
else
return 0;
}

void ENQUEUE(linkqueue *q,datatype x)//入队列
{
if (q== NULL)
return;

linklist *s = (linklist *)malloc(sizeof(linklist));
s->next = NULL;
s->data = x;
if (q->rear == NULL)
{
q->front = s;
q->rear = s;
}
else
{
q->rear->next = s;
q->rear = s;
}
}

datatype DEQUEUE(linkqueue *q)//出队列
{
linklist *s;
if(EMPTY(q))
{
printf("queue is empty.\n");
return 0;
}
else
{
s=q->front;
datatype tmp = s->data;

q->front=s->next;
free(s);

return tmp;
}
}

datatype FRONT(linkqueue *q)
{
if(EMPTY(q))
{
printf("queue is empty.\n");
return 0;
}
else
return q->front->data;
}
void main()
{
linkqueue *q;
datatype x=1,y=2,z=3;
SETNULL(q);
ENQUEUE(q,x);
printf("%d enqueue\n",q->rear->data);
ENQUEUE(q,y);
printf("%d enqueue\n",q->rear->data);
ENQUEUE(q,z);
printf("%d enqueue\n",q->rear->data);
x=DEQUEUE(q);
printf("%d dequeue\n",x);
y=DEQUEUE(q);
printf("%d dequeue\n",y);
z=DEQUEUE(q);
printf("%d dequeue\n",z);
free(q);
}

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧