定义和结构
#include#include#include#include 初始化
Status InitQueue(LinkQueue &Q){Q.front=Q.rear=new QNode;//生成节点为头节点,队头队尾指针指向该节点,(该节点为空节点)Q.front->next=NULL;return OK;//头节点指针域置空} 销毁队列和清空队列(不太清楚有什么区别就码一样了)
Status DestroyQueue(LinkQueue &Q){if(Q.front==Q.rear)//队列是否为空条件{printf("队空!\n");return ERROR;}Q.front=Q.rear;printf("队列已销毁!\n");return OK;}Status ClearQueue(LinkQueue &Q){if(Q.front==Q.rear)//队列是否为空条件{printf("队空!\n");return ERROR;}Q.front=Q.rear;printf("队列已清空!\n");return OK;} 判断队空
bool QueueEmpty(LinkQueue Q){if(Q.front==Q.rear) return true;return false;} 求队列长度
int QueueLength(LinkQueue Q)//有问题//躺了,直接用循环求{int i=0;QNode *p=Q.front->next;while(p){i++;p=p->next;}return i;} 入队
Status EnQueue(LinkQueue &Q,ElemType e){QNode *p=new QNode;p->data=https://tazarkount.com/read/e;p->next=NULL;Q.rear->next=p;Q.rear=p;return OK;} 出队
Status DeQueue(LinkQueue &Q,ElemType &e){if(Q.front==Q.rear){printf("队空!\n");return ERROR;}QNode *p;p=Q.front->next;e=p->data;Q.front->next=p->next;//重头if(Q.rear==p)//删除的是队列的最后一个节点{Q.rear=Q.front;}return OK;} 取对头元素
Status GetHead(LinkQueue Q,ElemType &e){if(Q.front==Q.rear){printf("队空!\n");exit(0);//直接停止}e=Q.front->next->data;return OK;} 遍历元素/打印元素
Status QueueTraverse(LinkQueue &Q){if(Q.front==Q.rear){printf("队空!\n");exit(0);}printf("队列元素:");QNode *p=Q.front->next;while(p)//while(p!=Q.rear){printf("%d ",p->data);p=p->next;}printf("\n");return OK;}void Print(LinkQueue Q){if(Q.front==Q.rear){printf("队空!\n");}QNode *p=Q.front->next;//也可以p=new QNode; p=Q.front->next;只是创建的那个新节点不被利用,浪费了一块空间while(p)//while(p!=Q.rear->next){printf("%d ",p->data);p=p->next;}printf("\n");} 菜单
void menu(){printf("********1.入队2.出队*********\n");printf("********3.取队顶4.清空队*******\n");printf("********5.遍历6.销毁*********\n");printf("********7.队长度8.退出*********\n");} 以下为功能函数
void enqueue(LinkQueue &Q){int n; ElemType e; int flag; printf("请输入入队元素个数(>=1):"); scanf("%d",&n); for(int i=0;i 主函数
int main(){LinkQueue Q;InitQueue(Q);int choice;while(1){menu();printf("请输入菜单号:");scanf("%d",&choice);if(choice==8) break;switch(choice){case 1:enqueue(Q);break;case 2:dequeue(Q);break;case 3:gethead(Q);break;case 4:ClearQueue(Q);break;case 5:QueueTraverse(Q);break;case 6:DestroyQueue(Q);break;case 7:queuelength(Q);break;default:printf("输入错误!");}}return 0;} 运行截图
【包含入队、出队、求长度、取队头、清除等 数据结构——链队的基本操作】
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
