| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 497 人关注过本帖
标题:关于队列的入队问题
只看楼主 加入收藏
刘林夕
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-10-14
结帖率:0
收藏
 问题点数:0 回复次数:3 
关于队列的入队问题
程序输入你的姓名时,程序自己就停止了,根本就无法输出程序中元素的入队个数,不知道是哪个环节出错了,请大家指点一下吧!
#include"stdio.h"
typedef struct
{
    int id[10];
    char name[10];
}datatype;

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

typedef struct
{
 QNode  *front; //队头指针
 QNode * rear;  //队尾指针
}LinkQueue;

void InQueue (LinkQueue *Q  )
{  
    QNode *s;
    datatype p;
    printf("请输入就诊号:") ;
    scanf("%d",p.id);
    //getchar();
    printf("请输入姓名:") ;
    scanf("%s",p.name);
   s=new QNode;
   s->data=p;        
   s->next=NULL;
   if(Q->front==NULL && Q->rear==NULL)//空队
       Q->rear=Q->front=s;
   else
     { Q->rear->next=s;   Q->rear=s;  }
}

int QueueLen(LinkQueue *Q)
{
    int n=0;
    QNode* p=Q->front;
   if(p==NULL)
   printf("队列为空!");
   else
   while(p!=NULL)
   {
       n++;
       p=p->next;
   }
   return n;   
}
main()
{
    int i;
    LinkQueue Q1;   
    InQueue(&Q1);
    i=QueueLen(&Q1);
    printf("%d",i);
}

搜索更多相关主题的帖子: 姓名 include 元素 
2011-11-24 12:55
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

typedef struct
{
     int id;
     char name[10];
}datatype;

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

typedef struct
{
     QNode  *front; //队头指针
     QNode * rear;  //队尾指针
}LinkQueue;

void InQueue (LinkQueue *Q  )
{  
     QNode *s = 0;
     datatype p = {0};
     printf("请输入就诊号:") ;
     scanf("%d", &p.id);
     //getchar();
     printf("请输入姓名:") ;
     scanf("%s", p.name);
     s = (QNode *)malloc(sizeof(QNode));
     s->data = p;        
     s->next = NULL;
     if((Q->front == NULL) && (Q->rear == NULL))//空队
          Q->rear = Q->front = s;
     else
     {
          Q->rear->next = s;   
          Q->rear = s;  
     }
}

int QueueLen(LinkQueue *Q)
{
     int n = 0;
     QNode* p = Q->front;
     if(NULL == p)
     {
          printf("队列为空!");
     }
     else
     {
          while(p != NULL)
          {
               n++;
               p = p->next;
          }
     }
     return n;
}
main()
{
     int i = 0;
     LinkQueue Q1 = {0};   
     InQueue(&Q1);
     i = QueueLen(&Q1);

     printf("%d\n", i);
}

你用以上代码,符合你的要求。
2011-11-24 18:09
刘林夕
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2011-10-14
收藏
得分:0 
是不是就是因为Q1没有初始化,所以才这样的?
2011-11-24 20:52
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:0 
整体上看,这段代码没有问题,只是有些小细节。
1、new 是C++函数,C语言中,使用malloc;
2、在空间内容填充上,windows默认为填充0xC,用NULL判断时会出错。
2011-11-25 09:13
快速回复:关于队列的入队问题
数据加载中...
 
   



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

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