| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6968 人关注过本帖
标题:关于队列的入队和出队的问题,和简单的输出来
取消只看楼主 加入收藏
humeng
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2016-10-10
结帖率:40%
收藏
已结贴  问题点数:10 回复次数:4 
关于队列的入队和出队的问题,和简单的输出来
#include<stdio.h>
#include<stdlib.h>
typedef struct aa
{
    int data;
    struct aa *next;
}Linkqueue;
typedef struct bb
{
    Linkqueue *front;
    Linkqueue *rear;
}Queue;
int InitQueue(Queue *Q)
{//初始化队列
    Q->front=(Linkqueue*)malloc(sizeof(Linkqueue));
    if(Q->front!=NULL)
    {
        Q->rear=Q->front;
        Q->front->next=NULL;
        return 1;
    }
    else
        return 0;
}
int EnterQueue(Queue *Q,int a)
{//入队
    Linkqueue *s;
    s=(Linkqueue*)malloc(sizeof(Linkqueue));
    if(s!=NULL)
    {
        s->data=a;
        s->next=NULL;
        Q->rear->next=s;
        Q->rear=s;
        return 1;
    }
    else
        return 0;
}
int DeleteQueue(Queue *Q,int *x)
{//出队
    Linkqueue *p;
    if(Q->front==Q->rear)
        return 0;
    p=Q->front->next;
    Q->front=p->next;
    if(Q->rear==p)
        Q->rear=Q->front;
    *x=p->data;
    free(p);
    return *x;
}
int main()
{
    Queue *L;
    Linkqueue *q;
    InitQueue(L);
    int b,n,*c,d;
    printf("你要入队的个数n:\n");
    scanf("%d",&n);
    printf("接下来输入n个数:\n");
    while(n--)
    {
        scanf("%d",&b);
        EnterQueue(L,b);
    }
    while(L->front!=L->rear)
    {
        d=DeleteQueue(L,c);
        printf("%d ",d);
    }
    printf("\n");
    return 0;
}
//不知道为什么运行不了,求大神指导
搜索更多相关主题的帖子: include return 
2016-10-23 10:34
humeng
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2016-10-10
收藏
得分:0 
回复 3楼 word123
这个,我已经改过来,不过执行到后面,还是有问题,求大神指点,谢啦
2016-10-23 22:48
humeng
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2016-10-10
收藏
得分:0 
回复 8楼 linlulu001
出队不应该是从队头出吗?怎么变成从队尾出了?虽然我懂从哪出都是一样的,但是总得遵守下队列进出的规则吧,大神
2016-10-25 19:52
humeng
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2016-10-10
收藏
得分:0 
回复 3楼 word123
#include<stdio.h>
#include<stdlib.h>
typedef struct aa
{
    int data;
    struct aa *next;
}Linkqueue;
typedef struct bb
{
    Linkqueue *front;
    Linkqueue *rear;
}Queue;
int InitQueue(Queue *Q)
{//初始化队列
    Q->front=(Linkqueue*)malloc(sizeof(Linkqueue));
    if(Q->front!=NULL)
    {
        Q->rear=Q->front;
        Q->front->next=NULL;
        return 1;
    }
    else
        return 0;
}
int EnterQueue(Queue *Q,int a)
{//入队
    Linkqueue *s;
    s=(Linkqueue*)malloc(sizeof(Linkqueue));
    if(s!=NULL)
    {
        s->data=a;
        s->next=NULL;
        Q->rear->next=s;
        Q->rear=s;
        return 1;
    }
    else
        return 0;
}
void DeleteQueue(Queue *Q,int *x)
{//出队
    Linkqueue *p;
    if(Q->front==Q->rear)
        return;
    p=Q->front->next;
    Q->front->next=p->next;
    if(Q->rear==p)
        Q->rear=Q->front;
    *x=p->data;
    printf("%d ",*x);
    free(p);
}
int main()
{
    Queue *L;
    Linkqueue *h;
    L=(Queue*)malloc(sizeof(Queue));
    InitQueue(L);
    int b,n,*c,d;
    printf("你要入队的个数n:\n");
    scanf("%d",&n);
    printf("接下来输入n个数:\n");
    while(n--)
    {
        scanf("%d",&b);
        EnterQueue(L,b);
    }
    h=L->front->next;//为什么我不加这句话,运行时就有问题,加了这句话,就可以正常输出,但是我认为这跟这个程序没什么关系啊,不懂
    while(L->front!=L->rear)
        DeleteQueue(L,c);
    printf("\n");
    return 0;
}
求大神帮我看下,就是我打了注释的地方,不能理解,谢谢
2016-10-25 20:23
humeng
Rank: 1
等 级:新手上路
帖 子:18
专家分:4
注 册:2016-10-10
收藏
得分:0 
回复 11楼 word123
喔,我知道了,谢谢
2016-10-29 10:47
快速回复:关于队列的入队和出队的问题,和简单的输出来
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038794 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved