目录
链队列
原则:先进先出
1、存储结构
#include<bits/stdc++.h> using namespace std; #define MAXSIZE 110 //顺序栈存储空间的初始分配量 #define OK 1 //成功标识 #define ERROR 0 //失败标识 typedef int Status; //Status是函数的类型,其值是函数结果状态代码,如OK等 typedef struct node { int data; //数据域 struct node *next;//指针域 }qnode,*que; typedef struct { que front;//对头指针 que rear;//队尾指针 }Linkque;
2、初始化
//初始化 Status init(Linkque &q) { q.front =q.rear =new qnode;//生成新节点作为头指针 q.front ->next=NULL;//头节点指针域置空 return OK; }
4、入队
//入队 Status Push(Linkque &q,int e) { que p=new qnode;//新节点分配空间 p->data =e;//为数据域赋值 p->next =NULL; q.rear ->next=p;//将新节点插入队尾 q.rear =p;//修改队尾指针 return OK; }
5、出队
//出队 Status Pop(Linkque &q,int &e) { if(q.front ==q.rear )//队空 return ERROR; que p=new qnode;//新节点分配空间 p=q.front->next;//p指向队头元素 e=p->data ;//保存对头元素 cout<<e<<endl; q.front->next =p->next ;//修改头节点的指针域 if(q.rear==p) q.rear =q.front ;//最后一个元素被删,队尾指针指向头节点 delete p;//是否原来队头元素空间 return OK; }
6.取队头元素
//取对头元素 int Get(Linkque q) { if(q.front !=q.rear )//队列非空 return q.front->next->data;//返回 }
7、输出队列中元素
Status Put(Linkque q) { cout<<"队列中元素:"; que p=new qnode; p=q.front->next; while(p)//队列非空 { cout<<p->data <<' '; p=p->next ; } cout<<endl; return OK; }
8、主函数
int main() { Linkque q; init(q); int n,k,e[100]; cout<<"请输入你要入队元素个数:"; cin>>n; cout<<"请输入你要入队元素:"; for(int i=0;i<n;i++) { cin>>e[i]; Push(q,e[i]); } Put(q); cout<<"对头元素:"; Pop(q,k); Put(q); return 0; }