队列操作的实现-链式存储

来源:互联网 发布:电脑智能机器人软件 编辑:程序博客网 时间:2024/05/16 06:02
#include <iostream>#include <stdio.h>#include <malloc.h>using namespace std;//链式队列结点typedef struct Node{     int data;     struct Node *next;}Node;//队列typedef struct {    Node *front,*rear;}LinkQueue;//初始化void init(LinkQueue *q){    q->front=(Node*)malloc(sizeof(Node));    if(q->front!=NULL){        q->rear=q->front;        q->front->next=NULL;    }}//判空bool isempty(LinkQueue *q){    if(q->front==q->rear)        return true;    else        return false;}//入队void enqueue(LinkQueue *q,int e){    //创建新结点,插入到链尾    Node *s=(Node *)malloc(sizeof(Node));    s->data=e;    s->next=NULL;    printf("%d 入队成功.\n",e);    q->rear->next=s;    q->rear=s;//修改队尾指针}//出队void dequeque(LinkQueue *q){    if(q->front==q->rear)        printf("empty");    int x;    Node *s=q->front->next;    x = s->data;    printf("%d 出队.\n",x);    q->front->next=s->next;    if(q->rear==s)        q->rear=q->front;//若原队列中只有一个节点,删除后为空    s=NULL;}//取队头元素int gettop(LinkQueue *q){    int x;    if(q->front==q->rear)        return 0;    else        x=q->front->next->data;    return x;}//输出void show(LinkQueue *q){    while(!isempty(q)){        cout<<q->front->next->data<<" ";        q->front->next=q->front->next->next;    }    cout<<endl;}int main(){    LinkQueue q;    LinkQueue *s;    s=&q;    //初始化队列    init(s);    //入队    for(int i=0;i<5;i++)        enqueue(s,i);    //出队    dequeque(s);    //取队头元素    int x = gettop(s);    cout<<"队头元素是:"<<x<<endl;    return 0;}

这里写图片描述