#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
// 入队
void EnQueue(LinkList front, LinkList &rear, ElemType val){
LinkList s;
if(rear->next == front){ // 判断队列是否满了
// 队列满了,申请一个结点空间,放入队列
s = (LinkList) malloc(sizeof(LNode));
rear->data = val; // 把入队元素放入rear指向的结点
rear->next = s; // 放了一个结点,其相当于做了分割
s->next = front;
rear = s;
}else{
rear->data = val;
rear = rear->next;
}
}
// 出队
void DeQueue(LinkList &front, LinkList rear){
if(front == rear){
printf("queue is empty\n");
}else{
printf("dequeue %d\n", front->data);
front = front->next;
}
}
// 循环队列
void CircleQueue(LinkList &front, LinkList &rear){
front = (LinkList) malloc(sizeof(LNode));
rear = front;
rear->next = front; // 构造循环队列
// 入队
EnQueue(front, rear, 3);
EnQueue(front, rear, 4);
// 出队
DeQueue(front, rear);
DeQueue(front, rear);
DeQueue(front, rear);
}
int main(){
LinkList front, rear;
CircleQueue(front, rear);
return 0;
}
【数据结构】408真题2019年第42题
于 2022-12-14 21:24:54 首次发布