问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构c语言版,出队入队及依次输出一个队列的操作。

发布网友 发布时间:2022-04-26 09:06

我来回答

2个回答

热心网友 时间:2022-06-26 09:41

#include <stdio.h>
#include <stdlib.h>

#define ElemType int 
#define Status int
#define OK 1
#define ERROR 0

typedef struct QNode{
    ElemType data;
    struct QNode *next;
}QNode;

typedef struct LinkQueue{
    QNode *front;
    QNode *rear;
}LinkQueue;

Status InitQueue(LinkQueue *q) { //建立队列 
    q->front=q->rear=(QNode *)malloc(sizeof(QNode));
    if(!q->front)
          return ERROR;
    q->front->next=NULL;
    return OK;
}

Status EnQueue(LinkQueue *q,ElemType e) { //入队 
     QNode *p=(QNode *)malloc(sizeof(QNode));
     if(!p)
           return ERROR;
     p->data=e;
     p->next=NULL;
     q->rear->next=p; //入队操作,从队尾(rear)进入
     q->rear=p;
     return OK;
}

Status DeQueue(LinkQueue *q,ElemType *e) { //出队 
    QNode *p=(QNode *)malloc(sizeof(QNode));
    if(!p)
         return ERROR;
 
    p=q->front->next; //q指向的是front指针的下一个位置,亦即队首元素 
    *e=p->data;
    q->front->next=p->next; //出队操作后,front++
    if(q->rear==p) //判断是否全部出队
          q->rear=q->front; //如果全部出队,则将队列置为空
    return OK;
}

Status PrintfQueue(LinkQueue *Q) {
    QNode *p;
     
    for(p=Q->front->next;p!=NULL;p=p->next)
          printf("%d\t",p->data);
}

int main(void)
{
    int i,n;
    ElemType e,de;
    LinkQueue *q=(LinkQueue *)malloc(sizeof(QNode));
    if(!q)
         return ERROR;
    InitQueue(q);
    
    printf("以下开始构造初始队列:\n\n");
    
    printf("请输入元素个数:");
    scanf("%d",&n);
    printf("\n");
    
    for(i=0;i<n;++i) {
    printf("请输入第%d个元素:",i+1);
        scanf("%d",&e);
        EnQueue(q,e);
    }
    printf("\n");
    printf ("初始队列构造完毕!\n\n");
    
    printf ("初始队列:\n");
    PrintfQueue(q);
    printf("\n\n");
    printf ("======================================================\n\n");
    
    printf("以下开始执行入队操作:\n\n");
    
    printf("请输入需入队的元素个数:");
    scanf("%d",&n);
    printf("\n");
    
    for(i=0;i<n;++i) {
    printf("请输入第%d个元素:",i+1);
        scanf("%d",&e);
        EnQueue(q,e);
    }
    printf("\n");
    printf ("入队%d个元素操作完毕!\n\n",n);
    
    printf("此时队列:\n");
   PrintfQueue(q);
   printf("\n\n");
    printf ("======================================================\n\n");
    
    printf("以下开始执行出队操作:\n\n");
    
    printf("请输入需出队的元素个数:");
    scanf("%d",&n);
    printf("\n");
    
    for(i=0;i<n;++i)
        DeQueue(q,&de);
    printf("\n");
    printf ("出队%d个元素操作完毕!\n\n",n);
    
    printf("此时队列:\n");
   PrintfQueue(q);
   printf("\n\n");
    printf ("======================================================\n\n");
   
    free(q);
    return 0;
}

执行结果

热心网友 时间:2022-06-26 09:41

void printQueue(LinkQueue *Q)/*依次输出队列*/
{
if(Q->front==Q->rear)
{
printf("队列为空");
exit(1);
}
while(Q->front!=Q->rear)/*老师告诉我说是这里的while是死循环,为什么是死循环呢,不是很懂,请细说。请帮我改为正确的代码,谢谢。*/
{

printf("%d, ", Q->front->data);
Q->front=Q->front->next;
}
//exit(0);
}试试可不可以
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? 在循环队列中怎样实现入队和出队操作? 数据结构 C语言 数据结构顺序队出队 执行出队入队操作后头指针尾指针的值 c语言题目。我已经排完顺序要怎么出队 采用顺序存储如何实现循环队列的初始化、入队、出队操作? c++,弹出栈和出队是不是意思都是使用栈顶和队头的元素的意思? 顺序队列的出队问题 循环队列中入队与出队算法 写出队列的入队及出队算法 在链队列的出队操作中,修改尾指针的情况发生在什么时候 队列的入队,出队。显示队中元素是指怎么样的操作? 出队的拼音怎么写 集合、排队、出队统称什么? 在循环队列中入队、出队操作的过程 8月医保返还个人账户时间 医保卡每个月几号返钱 日照医保卡每个月几号返钱 请问我是哈尔滨退休职工每个月个人账户的医保医保钱打到个人账户是几号_百度问一问 淮北职工医保每月返钱是多少号 两个手机,两个能关联吗?怎样才能看到另一个手机的聊天记录? 请解答入队出队算法 在循环队列中设置一个标志flag 当front=rear且flag=0时为队空 front=rear且flag=1队满 采用链式存储实现队列的初始化、入队、出队操作 实现循环队列的基本操作(初始化、判断队空、判断队满、入队、出队) 如何用ps实现照片扁平化 如何用PS做出扁平化长阴影效果 如何用PS快速实现图片扁平化! 如何在ps里创建扁平图标 如何用PS制作扁平化长投影效果 扁平化设计有什么要求? ps怎么做一个扁平化投影图标 旧的无线路由器拿到另一个地方去怎么安装? 我家昨天搬了新家,但是无线网怎么迁过来呢?路由器也拿过来了。 我的... 搬家路由器怎么迁 搬家了,以前用的无线路由器怎么安装呢? 要搬家wifi怎么弄过去 我搬家了到了新家要怎么连接路由器 搬家了换了网络原有的路由器怎么安装 光猫和路由器搬到新家去了,需要请师傅上门再安装一次吗?还是自己就可以装。 搬家以后原来的路由器怎么装?是不是要重新缴费? 帮我找几篇五年级上册作文,题目不限