//入队,插入元素
int EnterQueue(LinkQueue* LQ, int data,int priority) {
if (!LQ)
return 0;
if (IsFull(LQ)) {
cout << "无法插入元素" << data << "队列已满" << endl;
return 0;
}
QNode* qNode = new QNode;//动态分配一个节点
qNode->data = data;
qNode->priority = priority;//赋值优先级
qNode->next = NULL;
if (IsEmpty(LQ)) {//空队列
LQ->front = LQ->rear = qNode;
}
else {
LQ->rear->next = qNode;//将前驱结点和新结点相连
LQ->rear = qNode;//将qNode指向的结点,现在用rear来替代它指向此结点
//"="号的赋值方向是从右到左
}
LQ->length++;
return 1;
}
//7.单链表的删除
bool LinkDelete(LinkList*& L, int i) {//i是删除的第几位元素
LinkList* p,* q;
int index = 0;
p = L;//如果删除的是第一个节点就寄了,所以这里p指向的是头节点
if (!L || !L->next)
return false;
while ((p->next)&&(index<i-1)) {
p = p->next;
index++;
}
if (!p->next || (index > i - 1)) //当i>n或者i<1时,删除位置不合理
return false;
q = p->next;//q时临时保存被删除的节点的地址以备释放空间
p->next = q->next;// q->next指的是被删除节点的下一个节点的地址,然后就是p指向被删除的下一个节点的地址
delete q;
return true;
}
```c++
```