链队

来源:互联网 发布:剑侠情缘手游工资算法 编辑:程序博客网 时间:2024/06/04 18:24
#include<iostream>#include<malloc.h>#define MAXSIZE 50using namespace std;typedef int DataType;typedef struct node{//数据节点DataType data;struct node * next;}Qnode,* PQNode;typedef struct{//头尾指针PQNode front,rear;}LinkQueue,* PLinkQueue;int main(){//函数声明PLinkQueue Init_LinkQueue(void);/*初始化空链队*/int Empty_LinkQueue(PLinkQueue Q);/*判断链队是否为空*/void In_LinkQueue(PLinkQueue Q,DataType x);/*入队*/void Out_LinkQueue(PLinkQueue Q,DataType * y);/*出队*/int Front_LinkQueue(PLinkQueue Q);/*读队头元素*/void Destory_LinkQueue(PLinkQueue * Q);/*销毁队列*/void Creat_LinkQueue(PLinkQueue Q);/*建非空链队*/void Show_LinkQueue(PLinkQueue Q);/*输出链队*/PLinkQueue Q=Init_LinkQueue();cout<<"创建一个循环队列,请输入队列元素(最多"<<MAXSIZE<<"个),以负数结束:";Creat_LinkQueue(Q);Show_LinkQueue(Q);DataType x;cout<<"\n\n请输入要入队的元素值:";cin>>x;In_LinkQueue(Q,x);Show_LinkQueue(Q);DataType y;Out_LinkQueue(Q,&y);cout<<"\n\n删除的队头元素值为:"<<y<<endl;Show_LinkQueue(Q);cout<<"\n\n队头元素值为:"<<Front_LinkQueue(Q);Destory_LinkQueue(&Q);return 0;}/*初始化空链队*/PLinkQueue Init_LinkQueue(void){PLinkQueue Q;Q=(PLinkQueue)malloc(sizeof(LinkQueue));if(Q){Q->front=NULL;Q->rear=NULL;}return Q;}/*判断链队是否为空*/int Empty_LinkQueue(PLinkQueue Q){if(Q && Q->front==NULL && Q->rear==NULL)return 1;elsereturn 0;}/*入队*/void In_LinkQueue(PLinkQueue Q,DataType x){PQNode p;p=(PQNode)malloc(sizeof(Qnode));if(!p){cout<<"内存溢出!";}else{p->data=x;p->next=NULL;}if(Empty_LinkQueue(Q)){Q->rear=Q->front=p;}else{Q->rear->next=p;Q->rear=p;}}/*出队*/void Out_LinkQueue(PLinkQueue Q,DataType * y){PQNode p;if(Empty_LinkQueue(Q)){cout<<"队空!";}else{* y=Q->front->data;p=Q->front;Q->front=Q->front->next;free(p);}if(!Q->front)//如果队头为空Q->rear=NULL;}/*读队头元素*/int Front_LinkQueue(PLinkQueue Q){if(Empty_LinkQueue(Q)){cout<<"队空!";return -1;}else{return Q->front->data;}}/*销毁队列*/void Destory_LinkQueue(PLinkQueue * Q){PQNode p,q;if(* Q){p=(* Q)->front;while(p){q=p;p=p->next;free(q);}free(* Q);}* Q=NULL;}/*建非空链队*/void Creat_LinkQueue(PLinkQueue Q){DataType x;while(cin>>x){if(x>=0)In_LinkQueue(Q,x);elsebreak;}}/*输出链队*/void Show_LinkQueue(PLinkQueue Q){cout<<"输出链队为:";PQNode p = Q->front;while(p){cout<<p->data<<" ";p=p->next;}}

0 0
原创粉丝点击