| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1297 人关注过本帖
标题:求大神指教,队列的入列和出列,我这程序哪出问题了!!!!!
只看楼主 加入收藏
qinj13178952
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-3-22
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:8 
求大神指教,队列的入列和出列,我这程序哪出问题了!!!!!
#include<stdio.h>
#define size 100
typedef struct QNode{
  int   data;
  struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
   QueuePtr front;
   QueuePtr rear;
   int data[size];
}LinkQueue;
LinkQueue InitQueue(int n)
{
          LinkQueue Q;int i,elem;
          Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
          if(!Q.front)
          printf("存储分配失败");
          Q.front->next=NULL;
          for(i=0;i<n;i++)
          {scanf("%d",&elem);
           Q.data[i]=elem;}
          return Q;
}
void EnQueue(LinkQueue Q,int e)
{
          QueuePtr p;
          p=(QueuePtr)malloc(sizeof(QNode));
          if(!p)
          printf("存储分配失败");
          p->data=e;p->next=NULL;
          Q.rear->next=p;
          Q.rear=p;
}
int  DeQueue(LinkQueue Q)
{
          QueuePtr p;int e;
          if(Q.front==Q.rear) return 0;
          p=Q.front->next;e=p->data;
          Q.front->next=p->next;
          if(Q.rear==p)
          Q.rear=Q.front;
          free(p);
          return 1;
}
LinkQueue QueueTraverse(LinkQueue Q,int n)
{
   int i;
   for(i=0;i<n;i++)
    printf("%d\t",Q.data[i]);
    return Q;
}
int main()
{
    int e,s;LinkQueue Q;
    printf("构造一个队列:\n");
    Q=InitQueue(5);
    printf("插入一个元素:\n");
    EnQueue(Q,12);
    printf("插入新元素后队列为:\n");
    QueueTraverse(Q,6);
    printf("\n删除队头元素:\n");
    s=DeQueue(Q);
    if(!s)
    printf("队列为空\n");
    else
    printf("删除成功\n");
    QueueTraverse(Q,4);
    getch();
    return 0;
}
搜索更多相关主题的帖子: next include 
2013-04-05 19:30
好聚好散
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:138
专家分:123
注 册:2012-12-4
收藏
得分:0 
没赋值

无节操,无真相
2013-04-05 21:50
qinj13178952
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-3-22
收藏
得分:0 
回复 2楼 好聚好散
没赋值????这不是赋了吗?
LinkQueue InitQueue(int n)
{
          LinkQueue Q;int i,elem;
          Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
          if(!Q.front)
          printf("存储分配失败");
          Q.front->next=NULL;
          for(i=0;i<n;i++)
          {scanf("%d",&elem);
           Q.data[i]=elem;}
          return Q;
}
2013-04-05 22:01
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:20 
你这个是什么队列?

链式队列?顺序队列?


[fly]存在即是合理[/fly]
2013-04-05 22:57
qinj13178952
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-3-22
收藏
得分:0 
回复 4楼 azzbcc
应该是链队列吧,反正不是循环的
2013-04-05 23:16
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
链队列你弄个数组干什么?

这是你写的代码吧?


[fly]存在即是合理[/fly]
2013-04-05 23:21
qinj13178952
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-3-22
收藏
得分:0 
回复 6楼 azzbcc
那...那..那..那不弄数组怎么初始化。。。。。。是我写的啊
大神可否留个Q,以后求指教。。。

[ 本帖最后由 qinj13178952 于 2013-4-5 23:40 编辑 ]
2013-04-05 23:29
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

#define size 100

typedef struct QNode{
    int   data;
    struct QNode *next;
}QNode,*QueuePtr;

typedef struct LinkQueue{
    QueuePtr front;
    QueuePtr rear;
}LinkQueue, *pLinkQueue;

pLinkQueue create(int n)
{
    int i;
    QueuePtr s;
    pLinkQueue Q = (pLinkQueue)malloc(sizeof(LinkQueue));
    if(!Q)    {printf("存储分配失败");  return NULL;}
    
    Q->front=Q->rear = (QueuePtr)malloc(sizeof(QNode));
    if(!Q->front)
    {printf("存储分配失败");  return NULL;}
    
    Q->front->next = NULL;

    for(i = 0;i < n;i++)
    {
        s = (QueuePtr)malloc(sizeof(QNode));
        scanf("%d", &s->data);
        Q->rear->next = s;
        Q->rear = s;
    }
    Q->rear->next = NULL;

    return Q;
}

void EnQueue(pLinkQueue Q, int e)
{
    QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
    if(!p)    {printf("存储分配失败");  return;}

    p->data = e;p->next = NULL;
    Q->rear->next = p;
    Q->rear = p;
}

int  DeQueue(pLinkQueue Q, int *e)
{
    QueuePtr p;

    if(Q->front == Q->rear) return 0;

    p = Q->front->next;
    *e = p->data;
    Q->front->next = p->next;
    free(p);  return 1;
}

void QueueTraverse(pLinkQueue Q)
{
    QueuePtr tmp = Q->front->next;

    while (tmp)
    {
        printf("%d\t", tmp->data);
        tmp = tmp->next;
    }
    printf("\n");
}

void Destroy(pLinkQueue Q)
{
    QueuePtr p, q;
    
    p = Q->front;
    q = Q->front->next;
    while (p)
    {
        free(p);
        p = q;
        if(q)    q = q->next;
    }
    free(Q);
}

int main()
{
    int s = 0;
    pLinkQueue Q;

    printf("构造一个队列:\n");
    Q = create(5);

    printf("插入一个元素:\n");
    EnQueue(Q, 12);
    
    printf("插入新元素后队列为:\n");
    QueueTraverse(Q);

    printf("\n删除队头元素:  ");
    DeQueue(Q, &s);
    
    if(!s)
        printf("队列为空\n");
    else
        printf("删除成功\n");
    
    QueueTraverse(Q);
    Destroy(Q);

    return 0;
}


[fly]存在即是合理[/fly]
2013-04-05 23:54
qinj13178952
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2013-3-22
收藏
得分:0 
回复 8楼 azzbcc
大神。。。。能否留个Q?以后估计很多问题要问你。。。。
2013-04-06 22:38
快速回复:求大神指教,队列的入列和出列,我这程序哪出问题了!!!!!
数据加载中...
 
   



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

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