数据机构——链队列的算法(无漏洞版)
数据机构——链队列 完整算法 下面举部分 #include <iostream> using namespace std; typedef struct qnode { int data; struct qnode * next; }Qnode, * Queueptr; // 创建链 Qnode是struct qnode的别名,Queueptr是struct qnode *的别名 typedef struct { Queueptr front; //对头指针 Queueptr rear; //队尾指针 }LinkQueue; //创建队列 //初始化队列 void InitQueue(LinkQueue *Q) { Q->front=(Queueptr) malloc(sizeof(Qnode)); //队头和队尾指向头结点 if(!Q->front) { cout<<"no memory avaliable"<<endl; //存储分配失败 } else { Q->front->next=NULL; Q->rear=Q->front; } } //入队列函数 void Enqueue(LinkQueue *Q,int value) { Queueptr newp=(Queueptr)malloc(sizeof(Qnode)); if(!newp) cout<<"no memory avaliable"<<endl; //存储分配失败 newp->data=value; newp->next=NULL; Q->rear->next=newp; //p插入原队尾 Q->rear=newp; //p成为新的队尾 }
using namespace std;
typedef struct qnode
{
int data;
struct qnode * next;
}Qnode, * Queueptr; // 创建链 Qnode是struct qnode的别名,Queueptr是struct qnode *的别名
typedef struct
{
Queueptr front; //对头指针
Queueptr rear; //队尾指针
}LinkQueue; //创建队列
//初始化队列
void InitQueue(LinkQueue *Q)
{
Q->front=(Queueptr) malloc(sizeof(Qnode)); //队头和队尾指向头结点
if(!Q->front)
{
cout<<"no memory avaliable"<<endl; //存储分配失败
}
else
{
Q->front->next=NULL;
Q->rear=Q->front;
}
}
//入队列函数
{
Queueptr newp=(Queueptr)malloc(sizeof(Qnode));
if(!newp)
cout<<"no memory avaliable"<<endl; //存储分配失败
newp->data=value;
newp->next=NULL;
Q->rear->next=newp; //p插入原队尾
Q->rear=newp; //p成为新的队尾
}
//删除队列头函数
int DeQueue(LinkQueue *Q)
{
int x;
Queueptr p=(Queueptr)malloc(sizeof(Qnode));
if(Q->front==Q->rear)
cout<<"队列中无元素"<<endl;
p=Q->front->next; //指向对头结点
x=Q->front->next->data; //保存对头结点的数据
Q->front->next=p->next; //将对头结点从链上摘下
if(Q->rear==p)//原队中只有一个结点,删去后队列变空,此时队头指针已为空
Q->rear=NULL;
free(p); //释放被删队头结点
return x; //返回原队头数据
}
//打印队列函数
int PrintQueue(LinkQueue *Q)
剩余5页未读,继续阅读
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助