📄 习题3-链队列管理.c
字号:
#include "datastru.h"
#include <stdio.h>
#include <malloc.h>
DATATYPE1 dellinkqueue(LINKQUEUE *q)
{/*删除队头元素并返回*/
LINKQLIST *p;
DATATYPE1 v;
if(q->front == q->rear)
{ printf("队列空\n");
v = 0;}
else
{ p = (q->front)->next;
(q->front)->next = p->next;
if(p->next == NULL)
q->rear = q->front;
v = p->data;
free(p);}
return v;
}
void enlinkqueue(LINKQUEUE *q, DATATYPE1 x)
{/*元素x 入队列*/
(q->rear)->next = (LINKQLIST *)malloc(sizeof(LINKQLIST));
q->rear = (q->rear)->next;
(q->rear)->data = x;
(q->rear)->next = NULL;
}
void initlinkqueue(LINKQUEUE *q)
{/*链队列初始化*/
q->front = (LINKQLIST *)malloc(sizeof(LINKQLIST));
(q->front)->next = NULL;
q->rear = q->front;
}
void outlinkqueue(LINKQUEUE *q)
{/*链队列元素依次显示*/
LINKQLIST *p;
p = q->front;
printf("队列元素显示 : ");
while(p != q->rear)
{p = p->next;
printf("%d ",p->data);}
printf("\n");
}
main()
{
LINKQUEUE lq, *p;
int j;
p = &lq;
initlinkqueue(p);
printf("输入一整数(奇数——入队列、偶数——删除队头元素、0——退出) : ");
scanf("%d", &j);
while(j != 0) /*输入 0——退出*/
{ if(j % 2 == 1)
enlinkqueue(p,j); /*输入奇数——入队列*/
else
j = dellinkqueue(p); /*输入偶数——删除队头元素*/
outlinkqueue(p);
printf("\n输入一整数(奇数——入队列、偶数——删除队头元素、0——退出) : ");
scanf("%d", &j); /*继续输入*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -