数据结构-链队列的基本操作

来源:互联网 发布:社会融资规模数据特点 编辑:程序博客网 时间:2024/05/16 18:39
#include<iostream>#include<stdlib.h>#define OK 1#define ERROR 0using namespace std;typedef struct LNode{int data;struct LNode *next;}LNode;typedef struct Queue{LNode *front ,*rear;}Queue;void init_queue(Queue **q){LNode *node;*q=(Queue*)malloc(sizeof(Queue));node=(LNode*)malloc(sizeof(LNode));node->next=NULL;(*q)->front=(*q)->rear=node;}int insert_queue(Queue **q,int num){LNode *node;node=(LNode*)malloc(sizeof(LNode));if(!node) return ERROR;node->data=num;node->next=NULL;(*q)->rear->next=node;(*q)->rear=node;return OK;}int delete_queue(Queue **q,int *num){if((*q)->rear==(*q)->front) return ERROR;LNode *node;node=(*q)->front->next;(*q)->front->next=node->next;*num=node->data;if(node==(*q)->rear) (*q)->rear=(*q)->front;free(node);return OK;}void empty_queue(Queue **q){if((*q)->front==(*q)->rear) cout<<"已经是空队列"<<endl;while((*q)->front!=NULL){(*q)->rear=(*q)->front->next;free((*q)->front);(*q)->front=(*q)->rear;}cout<<"清除成功"<<endl;}void show_queue(Queue **q){LNode *node;node=(*q)->front->next;while(node!=NULL){cout<<node->data<<" ";node=node->next;}cout<<endl;}int main(){Queue *q;init_queue(&q);while(1){int tmp;cout<<"入队1出队2清队3输出队列4:";cin>>tmp;switch(tmp){case 1:int num1;cin>>num1;if(!insert_queue(&q,num1)) cout<<"入队失败"<<endl; break;case 2:int num2;if(!delete_queue(&q,&num2)) cout<<"出队失败"<<endl;else cout<<"出队数据:"<<num2<<endl;break;case 3:empty_queue(&q);break;default:show_queue(&q);break;}}return 0;} /*1112131415178145433123156333156111216674*/

原创粉丝点击