链表实现队列——————数据结构作业 旧城等待, 2022-05-06 12:57 206阅读 0赞 ## 作业code2: ## ##### \- 仿照作业code1的功能,将课本上链表的实现队列能完整实现 ##### ##### \- 需要通过main函数调用并能进行友好的人机交互输入 ##### [作业code1][code1] 链表实现队列的代码: #include<bits/stdc++.h> #define OK 1 #define ERROR 0 using namespace std; typedef int QElemType; typedef int Status; typedef int SElemType; typedef struct QNode { QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; LinkQueue q; QueuePtr p; Status InitQueue(LinkQueue &Q) { Q.front = Q.rear = new QNode; Q.front->next = NULL; return OK; } Status EnQueue(LinkQueue &Q,QElemType &e) { p = new QNode; p->data = e; p->next = NULL; Q.rear->next = p; Q.rear = p; return OK; } Status DeQueue(LinkQueue &Q,QElemType &e) { if(Q.front == Q.rear) return ERROR; p = Q.front->next; e = p->data; Q.front->next = p->next; if(Q.rear == p) Q.rear = Q.front; delete p; return OK; } SElemType GetHead(LinkQueue Q) { if(Q.front != Q.rear) return Q.front->next->data; } void menu() { printf( "1.入队\n"\ "2.出队\n"\ "3.取队首\n"\ "4.menu\n" "0.退出\n"\ ); } int main() { menu(); int e,choose; int k=0; InitQueue(q); while(true) { cout<<"请输入:"; cin>>choose; switch(choose) { case 1: printf("请输入入队元素:"); cin>>e; EnQueue(q,e); if(q.front != q.rear) { printf("队列:"); for(QueuePtr i=q.front->next;i!=q.rear->next;i=i->next) printf("%d ",i->data); } printf("\n"); break; case 2: if(q.front == q.rear) printf("队列为空!\n"); else { DeQueue(q,e); printf("出队元素是 %d\n",e); } if(q.front != q.rear) { printf("队列:"); for(QueuePtr i=q.front->next;i!=q.rear->next;i=i->next) printf("%d ",i->data); } printf("\n"); break; case 3: e=GetHead(q); printf("队首元素是:%d\n",e); break; case 4: menu(); break; case 0: k=1; break; } if(k) break; } return 0; } [code1]: https://blog.csdn.net/Hpuer_Random/article/details/83042836
还没有评论,来说两句吧...