首页 > 作文

C语言数据结构之链队列的基本操作

更新时间:2023-04-04 08:39:17 阅读: 评论:0

目录
1.队列的定义2.队列的表示和实现(1) 初始化操作(2)销毁队列(3) 入队操作(4) 出队操作附录完整代码:总结

1.队列的定义

队列 (queue)是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(fist in fist out,缩写为fifo)的特性。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。 假设队列为q=(a1,a2,…,an),那么a1就是队头元素,an则是队尾元素。队列中的元素是按照a1、a2、…、an的顺序进入的, 退出队列也必须按照同样的次序依次出队,也就是说,只有在a1、a2、…、an-1都离开队列之后,an才能退出队列。

2.队列的表示和实现

链队列可以定义如下:

#define  true    1#define  fal  0typedef struct qnode{        qelemtype  data;        struct qnode *next;}qnode, *queueptr;typedef struct{        queueptr  front;        queueptr  rear;}linkqueue;

红牛广告语(1) 初始化操作

status initqueue(linkqueue &q){        q.fr蓑笠翁ont = q.rear = (queueptr) malloc(sizeof(qnode));       if(!q.front) exit ( overflow);       q.front ->next = null;       return ok;} 

(2)销毁队列

义乌注册公司
status destroyqueue(linkqueue &q){         while(q.front) {q.rear = q.front->next;free (q.front);q.front = q.rear;        }        return ok;}

(3) 入队操作

status enqueue (linkqueue &q, qelemtype e){         p= (queueptr) malloc(sizeof(qnode));        if (!p) exit ( overflow);        p->data = e;  p->next = null;        q.rear -> next =p;        q.rear = p;        return ok;}

(4) 出队操作

status dequeue (linkqueue &q, qelemtype &e){        if ( q.front == q.rear) return error;        p=q.front->next;        e=p->data;        q.front->next =p->next;        if (q.rear == p) q.rear = q.front;        free(p);        return ok;}

附录完整代码:

#include<iostream>using namespace std;#define ok 1#define fal 春节习俗0typedef int qelemtype;typedef int status;typedef struct qnode{    qelemtype data;    struct qnode *next;}qnode,*queueptr;typedef struct{    queueptr font;    queueptr near;}linkqueue;status initqueue(linkqueue &q){    q.font=(queueptr)malloc(sizeof(qnode));    if(!q.font) exit(fal);    q.font->next=null;    q.near=q.font;    return ok;}status queueempty(linkqueue q){    if(q.font->next) return ok;    return fal;}status enqueue(linkqueue &q,qelemtype e){    queueptr p=(queueptr)malloc(sizeof(qnode));    p->data=e;    q.near->next = p;    q.near = q.near->next;    p->next = null;    return ok;}status dequeue(linkqueue &q,qelemtype &e){    if(!q.font->next) return fal;    queueptr p;    p=q.font->next;    e=p->data;    q.font->next=p->next;    if(q.near==p) q.near=q.font;   //当是最后一个元素时,q.font=null,q.near=q.font    free(p);    return ok;}status clearqueue(linkqueue &q){    queueptr p;    p=q.font->next;    queueptr q;    while(p)    {        q=p;        p=p->next;        q.font->next=p;        free(q);    }    q.near=q.font;    return ok;}v浮天水送无穷树 带雨云埋一半山oid menu(){    cout<<"初始化队列:1"<<endl;    cout<<"入队:2"<<endl;    cout<<"出队:3"<<endl;    cout<<"清空队列:4"<<endl;    cout<<"退出:5"<<endl;}int main(){    linkqueue q;    while(true)    {        int n;        menu();        scanf("%d",&n);        int e=-1;        switch(n)        {            ca 1:                initqueue(q);                continue;            ca 2:                printf("请输入一个元素");                scanf("%d",&e);                enqueue(q,e);                continue;            ca 3:                dequeue(q,e);                printf("\n出队元素%d\n",e);                continue;            ca 4:                clearqueue(q);                printf("清空成功\n");                continue;            default:                break;        }        if(n==5)break;    }}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注www.887551.com的更多内容!

本文发布于:2023-04-04 08:39:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/2395b6fbf9a5074a0bd65d7833015473.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C语言数据结构之链队列的基本操作.doc

本文 PDF 下载地址:C语言数据结构之链队列的基本操作.pdf

下一篇:返回列表
标签:队列   元素   操作   初始化
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图