您的位置:首页 > 理论基础 > 数据结构算法

用c++编写的数据结构链式队列

2010-04-05 11:16 381 查看
已经运行过了

#include<malloc.h> //头文件

#include<iostream.h>

#include<stdio.h>

#define DATATYPE1 int

typedef struct qnode

{

DATATYPE1 data;

struct qnode *next;

}LINKQLIST;

typedef struct

{

LINKQLIST *front,*rear;

}LINKQUEUE;

//链队列初始化

void initlinkqueue(LINKQUEUE *q)

{

q->front=(LINKQLIST *)malloc(sizeof(LINKQLIST));

(q->front)->next=NULL;

q->rear=q->front;

}

//判链队列空

int emptylinkqueue(LINKQUEUE *q)

{

int v;

if(q->front==q->rear)

v=1;

else

v=0;

return v;

}

//读链队列队首元素

DATATYPE1 getlinkfront(LINKQUEUE *q,DATATYPE1 v)

{

if(emptylinkqueue(q))

{

cout<<"队列为空!"<<endl;

v=NULL;

}

else

v=(q->front)->next->data;

return v;

}

//元素插入链队列

int enlinkqueue(LINKQUEUE *q,DATATYPE1 x)

{

(q->rear)->next=(LINKQLIST *)malloc(sizeof(LINKQLIST));

q->rear=(q->rear)->next;

(q->rear)->data=x;

(q->rear)->next=NULL;

return x;

}

//从链队列中删除元素

DATATYPE1 dellinkqueue(LINKQUEUE *q)

{

LINKQLIST *p;

DATATYPE1 v;

if(emptylinkqueue(q))

{printf("队列为空./n");

v=NULL;}

else

{p=(q->front)->next;

(q->front)->next=p->next;

if(p->next==NULL)

q->rear=q->front;

v=p->data;

free(p);}

return v;

}

//主函数

void main()

{

int i,x;

LINKQUEUE *q=(LINKQUEUE *)malloc(sizeof(LINKQUEUE));

initlinkqueue(q);

cout<<"请选择:1.读链队列队首元素 2.元素插入链队列 3.从链队列中删除元素 0.退出"<<endl;

cin>>i;

while(i!=0)

{

if(i==1)

{

x=getlinkfront(q,x);

if(x==0)

cout<<"读链队列队首元素失败!"<<endl;

else

cout<<"读链队列队首元素成功!其值为:"<<x<<endl;

}

else if(i==2)

{

cout<<"请输入要插入的数:"<<endl;

cin>>x;

x=enlinkqueue(q,x);

if(enlinkqueue(q,x))

cout<<"插入成功!其值为:"<<x<<endl;

else

cout<<"插入失败!"<<endl;

}

else if(i==3)

{

if(dellinkqueue(q))

cout<<"从链队列中删除元素成功!"<<endl;

else

cout<<"从链队列中删除元素失败!"<<endl;

}

cout<<"请选择:1.读链队列队首元素 2.元素插入链队列 3.从链队列中删除元素 0.退出"<<endl;

cin>>i;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: