源代码:
#include<iostream> #include<malloc.h> using namespace std; typedef int elemtype; typedef struct node { elemtype data; struct node *next; }node,*linklist; //链接队列初始化 void init(linklist &front,linklist &rear) { if(front==NULL&&rear==NULL) cout<<"队列初始化成功"<<endl; else cout<<"队列初始化失败"<<endl; } //测试链接队列是否为空 void empty(linklist &front) { if(front==NULL) cout<<"队列为空!"<<endl; else cout<<"队列非空!"<<endl; } //链接队列的插入 void push(linklist &front,linklist &rear) { elemtype item; linklist p; while(cin>>item) { if(item==-1) break; else { p->data = item; p->next = NULL; if(front == NULL) front = p; else rear->next = p; rear = p; } } } //取当前队头的元素 void gettop(linklist front) { elemtype item; if(front==NULL) cout<<"队列为空!"<<endl; else { item = front->data; cout<<"队头元素为:"<<item<<endl; } } void pop(linklist &front) { elemtype item; linklist p; if(front==NULL) cout<<"队列为空!"<<endl; else { p = front; item = p->data; front = front->next; free(p); cout<<item<<endl; } } //销毁队列 void des(linklist &front,linklist &rear) { while(front) { rear = front->next; free(front); front = rear; } } int main() { linklist front=NULL,rear=NULL; //链接队列初始化 cout<<"链接队列初始化!"<<endl; init(front,rear); //测试链接队列是否为空 cout<<endl<<"测试队列是否为空!"<<endl; empty(front); //链接队列的插入 cout<<endl<<"队列的插入,以-1为插入结束标志!"<<endl<<"插入元素为:"; push(front,rear); //取当前队头的元素 cout<<endl<<"取当前队头的元素!"<<endl; gettop(front); //链接队头的删除 cout<<endl<<"链接队头的删除!"<<endl; pop(front); empty(front); //销毁队列 cout<<endl<<"销毁队列"<<endl; des(front,rear); return 0; }
运行结果: