typedef int ElemType; //typedef结尾有;而#define结尾没有
typedef struct QNode{ //QNode链队列结点定义
ElemType data;
struct QNode *next;
}QNode;
typedef struct{ //LinkQueue链队列的结构由多个QNode结点组成
QNode *rear;
}LinkQueue; //typedef struct定义没有*
Linklist EnQueue(LinkQueue &Q,ElemType x){ //入队,rear尾插,将新元素x插入
QNode *p=(QNode *)malloc(sizeof(QNode));
p->data=x;
p->next=Q.rear->next;
Q.rear->next=p;
Q.rear=p;
}
bool DeQueue(LinkQueue &Q,ElemType &x){ //出队,front头删,将元素x删除
if(Q.rear==Q.rear->next) //队空,这里front=rear->next
return false; //循环队列front指向头结点,rear下一个为头
LNode *p=Q.rear->next->next; //新结点指向被删除结点
x=p->data; //x保存结点信息
Q.rear->next->next=p->next;
if(Q.rear==p) //仅一个结点,删除后队空,f=r
Q.rear=Q.rear->next;
free(p); //释放被删除结点
return true;
}
【3 栈和队列】只有尾结点rear进行入队出队。
于 2023-09-15 03:40:40 首次发布