| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 807 人关注过本帖, 1 人收藏
标题:救急呀~~~我的优先级队列问题
只看楼主 加入收藏
wjbtnt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-19
收藏(1)
 问题点数:0 回复次数:8 
救急呀~~~我的优先级队列问题
我这个程序可以输出队列,可是最后会提示NULL pointer assignment
谁能帮我看看呀,谢谢各位啦~~~~

#include "stdio.h"

typedef struct QNODE     /*定义*/
{
    int data;
    int pri;
    struct QNODE *next;
}QNODE,*queueptr;

typedef struct
{
    queueptr front;
}linkqueue;

queueptr p[5];                      /*P[5]为5个入口指针*/

void initqueue (linkqueue *q)          /*建立PQ,申请5个插入点,输出队列时,跳过PRI为0的节点,*/
{
    int i;
    q->front=(queueptr)malloc(sizeof(QNODE));
    if (!q->front) printf ("overflow\n");
    for (i=1;i<=5;i++)
     {
         p[i]=(queueptr)malloc(sizeof(QNODE));
         p[i]->pri=0;
         p[i]->data=10;
    }
    q->front->next=p[5];
    for (i=5;i>1;i--)
      p[i]->next=p[i-1];
      p[1]->next=NULL;
  printf ("建表成功\n");
}
int outqueue (linkqueue *q)      /*取队头元素*/
{
    int e;
        queueptr r;
    r=q->front->next;
    while (r->pri==0)
            r=r->next;
        e=r->data;
        q->front->next=r->next;
        free(r);
          return (e);

}

void inqueue (int i,int e)  /*插入优先级为I,值为E的元素从5个入口入队,入队后,入口指针指向新加入节点*/
{
    queueptr r;
        r=(queueptr)malloc(sizeof(QNODE));
    r->data=e;
        r->pri=i;
        r->next=p[i]->next;
        p[i]->next=r;
        p[i]=r;

}

void main()
{
    int e;
    int data,pri;
    int i=0;
    linkqueue *a;
    initqueue (a);
    printf ("enter the data and the PRI\n");
    while(1)
    {
        scanf("%d%d",&data,&pri);
        if (data==0)
        break;
        inqueue (pri,data);
        i++;
    }
while (i!=0)
{
    e=outqueue (a);
    printf ("%d   ",e);
    i--;
}
printf("\n");
      

}
搜索更多相关主题的帖子: 队列 
2007-11-30 12:08
wjbtnt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-19
收藏
得分:0 
给自己顶一下
2007-11-30 15:56
lanxindaocao
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-9-11
收藏
得分:0 
我给你顶一下~但我不懂~
2007-11-30 16:09
kidd2005
Rank: 1
等 级:新手上路
帖 子:193
专家分:0
注 册:2007-11-2
收藏
得分:0 
按字面解释好像是你的整型指针变量q没有初始化,但我还没学到~帮不了你~

潜心苦C,却发觉百C不得其解啊~
2007-11-30 16:34
wjbtnt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-19
收藏
得分:0 
再顶顶·~~自己真的很着急~~~可是没人理我~~~郁闷了
2007-12-01 00:55
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
/* 怎么用数组啊 */

[[italic] 本帖最后由 cosdos 于 2007-12-1 11:01 编辑 [/italic]]

—>〉Sun〈<—
2007-12-01 01:19
bysdy
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-29
收藏
得分:0 
linkqueue *a;
    initqueue (a);
这不对啊
我改成

linkqueue a;
    initqueue (&a);
后面的那句也是
 e=outqueue (&a);
可以运行了
不过不知道这程序干什么用,嘿嘿
2007-12-01 02:05
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
-_-!

[[italic] 本帖最后由 cosdos 于 2007-12-1 11:01 编辑 [/italic]]

—>〉Sun〈<—
2007-12-01 02:23
wjbtnt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-19
收藏
得分:0 
谢谢所有帮助我的人
谢谢上面几楼的人帮我·~~我这程序真的搞了好久都搞不好·~~按7楼说的就搞好了
也谢谢8楼的,直接给我程序,其他楼的也谢谢喽
2007-12-01 10:20
快速回复:救急呀~~~我的优先级队列问题
数据加载中...
 
   



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

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